Udacity Self-Driving Car Engineer Nanodegree

Project 4: Advanced Lane Finding

Import Packages

In [1]:
import numpy as np
import cv2
import glob
import matplotlib.pyplot as plt
import pickle
from moviepy.editor import VideoFileClip
from IPython.display import HTML
%matplotlib inline

Step 1: Camera Calibrating

For this section when calibrating the camera using chessboard images, I mainly referenced the code given in class as a start point.

1. Find corners of chessboard image

Before test on actual road images, the chessboard images are used to test camera calibration. I used glob to iterate over all the chessboard images in camera_cal

In [2]:
# Read in chessbord images
imgs = glob.glob('./camera_cal/calibration*.jpg')

# Arrays to store object points and image points from all the images.
objpoints = [] # 3d points in real world space
imgpoints = [] # 2d points in image plane.

# Prepare object points
objp = np.zeros((6*9,3), np.float32)
objp[:,:2] = np.mgrid[0:9,0:6].T.reshape(-1,2) # x,y coordinates

# For visualization
fig, axs = plt.subplots(5,4, figsize=(24, 9))
fig.tight_layout()
axs = axs.ravel()
fig.subplots_adjust(hspace = .2, wspace=.001)

# Search for chessboard corners for each image
for i, fname in enumerate(imgs):
    
    # read in ith image
    img = cv2.imread(fname)
        
    # Convert image to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    # Find chessboard corners
    ret, corners = cv2.findChessboardCorners(gray, (9,6), None)
    
    # If corners are found, add object points, image points
    if ret == True:
        imgpoints.append(corners)
        objpoints.append(objp)
        
    # Draw and display the corners
    img = cv2.drawChessboardCorners(img, (9,6), corners, ret)
    axs[i].axis('off')
    axs[i].imshow(img)
    axs[i].set_title('{}'.format(fname))

# Save the camera calibration result for later use (we won't worry about rvecs / tvecs)
dist_pickle = {}
dist_pickle["objpoints"] = objpoints
dist_pickle["imgpoints"] = imgpoints
pickle.dump( dist_pickle, open( "calibration.p", "wb" ) )

Note: From the results, we can see that for image 'calibration1, calibration4, and calibration5' no chess corners are found.

2. Chessboard image calibration

Define cal_undistort function for camera calibration and test it on chessboard images.

In [3]:
def cal_undistort(img, objpoints, imgpoints):
    
    img_size = (img.shape[1], img.shape[0])
    
    # Camera calibration, given object points, image points, and the shape of the grayscale image
    ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera(objpoints, imgpoints, img_size, None, None)
    
    undist = cv2.undistort(img, mtx, dist, None, mtx)
    return undist
In [4]:
# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

# Read in test image
img = cv2.imread('./camera_cal/calibration1.jpg')

# Performs the camera calibration, image distortion correction
undistorted = cal_undistort(img, objpoints, imgpoints)
    
# Visualize undistortion
f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
f.subplots_adjust(hspace = .2, wspace=.05)
ax1.imshow(img)
ax1.set_title('Original Image', fontsize=30)
ax2.imshow(undistorted)
ax2.set_title('Undistorted Image', fontsize=30)
Out[4]:
<matplotlib.text.Text at 0x240366a52e8>

3. Camera calibration example image for car camera

Now, the cal_undistort function performs good on chessboard images, now we want to test on actual car images.

In [5]:
# Read in test images
test_imgs1 = glob.glob('./test_images/test*.jpg')
test_imgs2 = glob.glob('./test_images/straight_lines*.jpg')
test_imgs = test_imgs1 + test_imgs2

for i, fname in enumerate(test_imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    # Undistort image
    undistorted = cal_undistort(img, objpoints, imgpoints)
    
    # Visualize undistortion
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
    f.subplots_adjust(hspace = .2, wspace=.05)
    ax1.imshow(img)
    ax1.set_title('Original Image: {}'.format(fname), fontsize=10)
    ax2.imshow(undistorted)
    ax2.set_title('Undistorted Image: {}'.format(fname), fontsize=10)

Note: undistort is particularly noticeable by the change in shape of the car hood

Step 2: Apply Binary Thresholds

In this step I attempted to convert the undistorted image to different color spaces and try out combinations with different color and gradient thresholds to enerate a binary image where the lane lines are clearly visibel. From this step on, i will mainly perform the processing pipeline tuning on image 'straight_line1'(stright line helps determine destination point and source point later for perspective transform, and yellow lines is where I have problem detecting in Project 1) and 'test4'(image with curved lines, tree shadows and yellow lines, most complicated one).

1. Gradient threshold

Threshold functions

In tis section, I will first define each threshold function seperately

In [6]:
# Note: img for following functions is the undistorted image
# Sobel x or y threshold
def abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=(0, 255)):
    
    # Convert to grayscale
    gray = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
    
    # Take the absolute value of the derivative in x or y given orient = 'x' or 'y'
    if orient == 'x':
        abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel))
    if orient == 'y':
        abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel))
        
    # Scale to 8-bit (0-255) then convert to type=np.uint8
    scaled_sobel = np.uint8(255*abs_sobel/np.max(abs_sobel))
    
    # Create a mask of 1's where the scaled gradient magnitude is > thresh_min and < thresh_max
    binary_output = np.zeros_like(scaled_sobel)
    binary_output[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1
    
    return binary_output

# Magnitude threshold
def mag_thresh(img, sobel_kernel=3, mag_thresh=(0, 255)):
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    # Take both Sobel x and y gradients
    sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)
    sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)
    # Calculate the gradient magnitude
    gradmag = np.sqrt(sobelx**2 + sobely**2)
    # Rescale to 8 bit
    scale_factor = np.max(gradmag)/255 
    gradmag = (gradmag/scale_factor).astype(np.uint8) 
    # Create a binary image of ones where threshold is met, zeros otherwise
    binary_output = np.zeros_like(gradmag)
    binary_output[(gradmag >= mag_thresh[0]) & (gradmag <= mag_thresh[1])] = 1

    return binary_output

# Direction of Gradient threshold
def dir_threshold(img, sobel_kernel=3, thresh=(0.7, 1.3)):
    
    # Convert to grayscale
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    
    # Take the gradient in x and y separately
    abs_sobel_x = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel))
    abs_sobel_y = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0 ,1, ksize=sobel_kernel))
    
    # Calculate the direction of the gradient 
    dir_grad = np.arctan2(abs_sobel_y, abs_sobel_x)
    
    # Create a binary mask where direction thresholds are met
    binary_output = np.zeros_like(dir_grad)
    binary_output[(dir_grad >= thresh[0]) & (dir_grad <= thresh[1])] = 1
    
    return binary_output

Combining thresholds

Combine the selected thresholds functions.

In [7]:
# Combining all thresholds
def combine_thresh(img):
    
   # Choose a Sobel kernel size
    ksize = 15 # Choose a larger odd number to smooth gradient measurements
    
    # Apply each of the thresholding functions
    gradx = abs_sobel_thresh(undist, orient='x', sobel_kernel=ksize, thresh=(20, 100))
    mag_binary = mag_thresh(undist, sobel_kernel=ksize, mag_thresh=(30, 100))
    dir_binary = dir_threshold(undist, sobel_kernel=ksize, thresh=(0.7, 1.4))
    
    # Combine the gradient, magnitude and direction thresholds.
    combined = np.zeros_like(dir_binary)
    combined[(gradx == 1) | ((mag_binary == 1) & (dir_binary == 1))] = 1
    
    return combined
In [8]:
imgs = ['./test_images\\test4.jpg', './test_images\\straight_lines1.jpg']

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

for i, fname in enumerate(imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    # Undistort image
    undist = cal_undistort(img, objpoints, imgpoints)
    
    # Apply Binary Thershold
    combined = combine_thresh(undist)

    # Plot the result
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
    f.tight_layout()
    ax1.imshow(undist)
    ax1.set_title('Original Undistorted Image:{}'.format(fname), fontsize=20)
    ax2.imshow(combined, cmap='gray')
    ax2.set_title('Combined Thresholded Sobel+Mag.+Dir.:{}'.format(fname), fontsize=20)
    plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)

2. Color Space

Only gradient threshold alone is not enough, the yellow line in 'test4' image is not well detected. So we apply color space threshold

In [9]:
def color_thresh(img):
    # Note: img is the undistorted image    
    # R & G thresholds so that yellow lanes are detected well.
    color_threshold = 150
    R = img[:,:,0]
    G = img[:,:,1]
    r_g_condition = np.zeros_like(R)
    r_g_condition[(R > color_threshold) & (G > color_threshold)] = 1
    
    # Convert to HLS color space
    hls = cv2.cvtColor(img, cv2.COLOR_RGB2HLS)
    
    # Seperate H,L,S channel
    l_channel = hls[:,:,1]
    s_channel = hls[:,:,2]
    
    # S channel performs well for detecting bright yellow and white lanes
    s_thresh = (100, 255)
    binary_s = np.zeros_like(s_channel)
    binary_s[(s_channel > s_thresh[0]) & (s_channel <= s_thresh[1])] = 1
    
    # L channel performs well for avoiding pixels which have shadows and as a result darker.
    l_thresh = (120, 255)
    binary_l = np.zeros_like(l_channel)
    binary_l[(l_channel > l_thresh[0]) & (l_channel <= l_thresh[1])] = 1
    
    return binary_s, binary_l, r_g_condition
In [10]:
imgs = ['./test_images\\test4.jpg', './test_images\\straight_lines1.jpg']

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

for i, fname in enumerate(imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

    undist = cal_undistort(img, objpoints, imgpoints)

    binary_s, binary_l, r_g_condition = color_thresh(undist)

    # Plot the result
    f, (ax1, ax2, ax3, ax4) = plt.subplots(1, 4, figsize=(24, 9))
    f.tight_layout()

    ax1.imshow(undist)
    ax1.set_title('Original Image:{}'.format(fname), fontsize=20)

    ax2.imshow(binary_s,cmap='gray')
    ax2.set_title('S Binary:{}'.format(fname), fontsize=20)

    ax3.imshow(binary_l,cmap='gray')
    ax3.set_title('L Binary:{}'.format(fname), fontsize=20)

    ax4.imshow(r_g_condition,cmap='gray')
    ax4.set_title('R,G Binary:{}'.format(fname), fontsize=20)
    plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)

3. Combine Color and Gradient

Here we combine the binary threshold from color space and gradient, by obersvation a lane should either be yellowish or whiteish and it should also have gradient.

In [11]:
def color_grad_thresh(img):
    
    # Gradient
    combined_grad = combine_thresh(img)
    
    # Color space
    binary_s, binary_l, r_g_condition = color_thresh(img)
    
    # Combine the two binary thresholds
    combined_binary = np.zeros_like(binary_s)
    combined_binary[((r_g_condition ==1) & (binary_l == 1)) & ((binary_s == 1) | (combined_grad == 1))] = 1
    
    return combined_binary
In [12]:
imgs = ['./test_images\\test4.jpg', './test_images\\straight_lines1.jpg']

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

for i, fname in enumerate(imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
    undist = cal_undistort(img, objpoints, imgpoints)

    combined_binary = color_grad_thresh(undist)

    # Plot the result
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(24, 9))
    f.tight_layout()
    ax1.imshow(undist)
    ax1.set_title('Original Undistorted Image:{}'.format(fname), fontsize=20)
    ax2.imshow(combined_binary, cmap='gray')
    ax2.set_title('Combined HS channel and gradient thresholds:{}'.format(fname), fontsize=20)
    plt.subplots_adjust(left=0., right=1, top=0.9, bottom=0.)

Note: After applied Color/gradient threshold, the lane lines are clearly visible. There are still some noises detect, but they can be eliminated by perspective transform.

Step 3: Perspective Transform

1. Define perspective transform function

Apply a perspective transform by choosing four source points manually

In [13]:
# Define a function that takes an image and performs perspective tranform
def corners_unwarp(img, src, dst):
    
    # Grab the image shape
    img_size = (img.shape[1], img.shape[0])
      
    # Given src and dst points, calculate the perspective transform matrix
    M = cv2.getPerspectiveTransform(src, dst)
    
    # Warp the image using OpenCV warpPerspective()
    warped = cv2.warpPerspective(img, M, img_size)

    # Return the resulting image and matrix
    return warped, M

2. Perspective Transform for straight line

The first step is to investigate an image where the lane lines are straight, here I used straight_lines1.jpg, and find four points lying along the lines that, after perspective transform, make the lines look straight and vertical from a bird's eye view perspective.

In [14]:
img = cv2.imread('./test_images/straight_lines1.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

undist = cal_undistort(img, objpoints, imgpoints)

combined_binary = color_grad_thresh(undist)

# Source points
src = np.float32([[565, 470],[722, 470], [1120, 720],[190, 720]])
    
# Destination points
dst = np.float32([[320, 1], [920, 1], [920, 720],[320, 720]])

# Save the camera calibration result for later use (we won't worry about rvecs / tvecs)
dist_pickle = {}
dist_pickle["src"] = src
dist_pickle["dst"] = dst
pickle.dump( dist_pickle, open( "src_dst.p", "wb" ) )

# Perspective transform
warped_thresh, M_thresh = corners_unwarp(combined_binary, src, dst)
warped_undist, M_undist = corners_unwarp(undist, src, dst)

f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
f.subplots_adjust(hspace = .2, wspace=.05)
ax1.imshow(undist, cmap='gray')
x = [src[3][0],src[0][0],src[1][0],src[2][0]]
y = [src[3][1],src[0][1],src[1][1],src[2][1]]
ax1.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax1.set_title('Undistorted Image with source points draw', fontsize=10)
ax2.imshow(warped_undist, cmap='gray')
x = [dst[3][0],dst[0][0],dst[1][0],dst[2][0]]
y = [dst[3][1],dst[0][1],dst[1][1],dst[2][1]]
ax2.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax2.set_title('Wraped Image with dest. points draw', fontsize=10)

f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
f.subplots_adjust(hspace = .2, wspace=.05)
ax1.imshow(combined_binary, cmap='gray')
x = [src[3][0],src[0][0],src[1][0],src[2][0]]
y = [src[3][1],src[0][1],src[1][1],src[2][1]]
ax1.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax1.set_title('Undistorted Image with source points draw', fontsize=10)
ax2.imshow(warped_thresh, cmap='gray')
x = [dst[3][0],dst[0][0],dst[1][0],dst[2][0]]
y = [dst[3][1],dst[0][1],dst[1][1],dst[2][1]]
ax2.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax2.set_title('Wraped Image with dest. points draw', fontsize=10)
Out[14]:
<matplotlib.text.Text at 0x2403728deb8>

Note: The resulted bird's eye lanes are pretty straight.

3. Perspective Transform for curved line

The same four source points are applied to transform a curved lane image. The test of whether or not the transform is correct, is that the lane lines should appear parallel in the warped images even though the lines are curved.

In [15]:
img = cv2.imread('./test_images/test3.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

undist = cal_undistort(img, objpoints, imgpoints)

combined_binary = color_grad_thresh(undist)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

# Perspective transform
# Perspective transform
warped_thresh, M_thresh = corners_unwarp(combined_binary, src, dst)
warped_undist, M_undist = corners_unwarp(undist, src, dst)

f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
f.subplots_adjust(hspace = .2, wspace=.05)
ax1.imshow(undist, cmap='gray')
x = [src[3][0],src[0][0],src[1][0],src[2][0]]
y = [src[3][1],src[0][1],src[1][1],src[2][1]]
ax1.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax1.set_title('Undistorted Image with source points draw', fontsize=10)
ax2.imshow(warped_undist, cmap='gray')
x = [dst[3][0],dst[0][0],dst[1][0],dst[2][0]]
y = [dst[3][1],dst[0][1],dst[1][1],dst[2][1]]
ax2.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax2.set_title('Wraped Image with dest. points draw', fontsize=10)

f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
f.subplots_adjust(hspace = .2, wspace=.05)
ax1.imshow(combined_binary, cmap='gray')
x = [src[3][0],src[0][0],src[1][0],src[2][0]]
y = [src[3][1],src[0][1],src[1][1],src[2][1]]
ax1.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax1.set_title('Undistorted Image with source points draw', fontsize=10)
ax2.imshow(warped_thresh, cmap='gray')
x = [dst[3][0],dst[0][0],dst[1][0],dst[2][0]]
y = [dst[3][1],dst[0][1],dst[1][1],dst[2][1]]
ax2.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
ax2.set_title('Wraped Image with dest. points draw', fontsize=10)
Out[15]:
<matplotlib.text.Text at 0x2403ab0bf98>

Note: the curved lines are (more or less) parallel in the transformed image

4. Perspective transform result of all test figures

In [16]:
# Read in test images
test_imgs = glob.glob('./test_images/test*.jpg')
test_imgs2 = glob.glob('./test_images/straight_lines*.jpg')
test_imgs = test_imgs1 + test_imgs2

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

for i, fname in enumerate(test_imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
    undist = cal_undistort(img, objpoints, imgpoints)

    # Perspective transform
    warped, M = corners_unwarp(undist, src, dst)
    
    # Visualize undistortion
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
    f.subplots_adjust(hspace = .2, wspace=.05)
    ax1.imshow(undist)
    x = [src[3][0],src[0][0],src[1][0],src[2][0]]
    y = [src[3][1],src[0][1],src[1][1],src[2][1]]
    ax1.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
    ax1.set_title('Undistorted Image with source points draw: {}'.format(fname), fontsize=10)
    ax2.imshow(warped)
    x = [dst[3][0],dst[0][0],dst[1][0],dst[2][0]]
    y = [dst[3][1],dst[0][1],dst[1][1],dst[2][1]]
    ax2.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
    ax2.set_title('Wraped Image with dest. points draw: {}'.format(fname), fontsize=10)

5. Perspective transform result of all test figures after threshold

In [17]:
# Read in test images
test_imgs = glob.glob('./test_images/test*.jpg')
test_imgs2 = glob.glob('./test_images/straight_lines*.jpg')
test_imgs = test_imgs1 + test_imgs2

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

for i, fname in enumerate(test_imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    
    undist = cal_undistort(img, objpoints, imgpoints)
    combined_binary = color_grad_thresh(undist)

    # Perspective transform
    binary_warped, M = corners_unwarp(combined_binary, src, dst)
    
    # Visualize undistortion
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
    f.subplots_adjust(hspace = .2, wspace=.05)
    ax1.imshow(combined_binary, cmap='gray')
    x = [src[3][0],src[0][0],src[1][0],src[2][0]]
    y = [src[3][1],src[0][1],src[1][1],src[2][1]]
    ax1.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
    ax1.set_title('Undistorted Image with source points draw: {}'.format(fname), fontsize=10)
    ax2.imshow(binary_warped, cmap='gray')
    x = [dst[3][0],dst[0][0],dst[1][0],dst[2][0]]
    y = [dst[3][1],dst[0][1],dst[1][1],dst[2][1]]
    ax2.plot(x, y, color='#33cc99', alpha=0.4, linewidth=3, solid_capstyle='round', zorder=2)
    ax2.set_title('Wraped Image with dest. points draw: {}'.format(fname), fontsize=10)

Step 4: Finding Lanes

Identify lane pixels

1. Sliding Window Polyfit Function

In [35]:
def sliding_window(binary_warped):
    # Take the histogram of the bottom half of the image
    # The peaks in the histogram tell us about the likely position of the lane pixels in the image
    histogram = np.sum(binary_warped[binary_warped.shape[0]//2:,:], axis=0)
    
    # Find the peak of the left and right halves of the histogram
    # These will be the starting point for the left and right lines
    midpoint = np.int(histogram.shape[0]//2)
    leftx_base = np.argmax(histogram[:midpoint])
    rightx_base = np.argmax(histogram[midpoint:]) + midpoint
    
    # Choose the number of sliding windows
    nwindows = 10
    
    # Set height of windows
    window_height = np.int(binary_warped.shape[0]/nwindows)
    
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    
    # Current positions to be updated for each window
    leftx_current = leftx_base
    rightx_current = rightx_base
    
    # Set the width of the windows +/- margin
    margin = 80
    
    # Set minimum number of pixels found to recenter window
    minpix = 40
    
    # Create empty lists to receive left and right lane pixel indices
    left_lane_inds = []
    right_lane_inds = []
    
    # Rectangle data for visualization
    rectangle_data = []
    
    # Step through the windows one by one
    for window in range(nwindows):
        # Identify window boundaries in x and y (and right and left)
        win_y_low = binary_warped.shape[0] - (window+1)*window_height
        win_y_high = binary_warped.shape[0] - window*window_height
        win_xleft_low = leftx_current - margin
        win_xleft_high = leftx_current + margin
        win_xright_low = rightx_current - margin
        win_xright_high = rightx_current + margin
        # Store rectangle data for visualization
        rectangle_data.append((win_y_low, win_y_high, win_xleft_low, win_xleft_high, win_xright_low, win_xright_high)) 
        # Identify the nonzero pixels in x and y within the window
        good_left_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
        (nonzerox >= win_xleft_low) &  (nonzerox < win_xleft_high)).nonzero()[0]
        good_right_inds = ((nonzeroy >= win_y_low) & (nonzeroy < win_y_high) & 
        (nonzerox >= win_xright_low) &  (nonzerox < win_xright_high)).nonzero()[0]
        # Append these indices to the lists
        left_lane_inds.append(good_left_inds)
        right_lane_inds.append(good_right_inds)
        # If you found > minpix pixels, recenter next window on their mean position
        if len(good_left_inds) > minpix:
            leftx_current = np.int(np.mean(nonzerox[good_left_inds]))
        if len(good_right_inds) > minpix:        
            rightx_current = np.int(np.mean(nonzerox[good_right_inds]))
            
    # Concatenate the arrays of indices
    left_lane_inds = np.concatenate(left_lane_inds)
    right_lane_inds = np.concatenate(right_lane_inds)

    # Extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds] 
    
    left_fit, right_fit = (None, None)
    # Fit a second order polynomial to each
    if len(leftx) != 0:
        left_fit = np.polyfit(lefty, leftx, 2)
    if len(rightx) != 0:
        right_fit = np.polyfit(righty, rightx, 2)
    
    visualization_data = (rectangle_data, histogram)
    
    return left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data

2. Perform sliding window function on example image

In [36]:
img = cv2.imread('./test_images/straight_lines1.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

undist = cal_undistort(img, objpoints, imgpoints)

combined_binary = color_grad_thresh(undist)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

# Perspective transform
binary_warped, perspective_M = corners_unwarp(combined_binary, src, dst)

# Test sliding window
left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window(binary_warped)

# Visualization
# Create an output image to draw on and  visualize the result
out_img = np.dstack((binary_warped, binary_warped, binary_warped))*255

# Generate x and y values for plotting
ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]

rectangles = visualization_data[0]
histogram = visualization_data[1]

for rect in rectangles:
# Draw the windows on the visualization image
    cv2.rectangle(out_img,(rect[2],rect[0]),(rect[3],rect[1]),(0,255,0), 2) 
    cv2.rectangle(out_img,(rect[4],rect[0]),(rect[5],rect[1]),(0,255,0), 2) 

# Identify the x and y positions of all nonzero pixels in the image
nonzero = binary_warped.nonzero()
nonzeroy = np.array(nonzero[0])
nonzerox = np.array(nonzero[1])
out_img[nonzeroy[left_lane_inds], nonzerox[left_lane_inds]] = [255, 0, 0]
out_img[nonzeroy[right_lane_inds], nonzerox[right_lane_inds]] = [100, 200, 255]
plt.imshow(out_img)
plt.plot(left_fitx, ploty, color='yellow')
plt.plot(right_fitx, ploty, color='yellow')
plt.xlim(0, 1280)
plt.ylim(720, 0)
Out[36]:
(720, 0)
In [37]:
# Print histogram from sliding window polyfit for example image
plt.plot(histogram)
plt.xlim(0, 1280)
Out[37]:
(0, 1280)

2. Polyfit Using Fit from Previous Frame

Now we know where the lines are. In the next frame of video we don't need to do a blind search again, but instead we can just search in a margin around the previous line position.

In [38]:
# Define method to fit polynomial based on a previous fit
def polyfit_using_prev(binary_warped, left_fit_prev, right_fit_prev):
    nonzero = binary_warped.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    margin = 80
    
    left_lane_inds = ((nonzerox > (left_fit_prev[0]*(nonzeroy**2) + left_fit_prev[1]*nonzeroy + 
                    left_fit_prev[2] - margin)) & (nonzerox < (left_fit_prev[0]*(nonzeroy**2) + 
                    left_fit_prev[1]*nonzeroy + left_fit_prev[2] + margin))) 

    right_lane_inds = ((nonzerox > (right_fit_prev[0]*(nonzeroy**2) + right_fit_prev[1]*nonzeroy + 
                    right_fit_prev[2] - margin)) & (nonzerox < (right_fit_prev[0]*(nonzeroy**2) + 
                    right_fit_prev[1]*nonzeroy + right_fit_prev[2] + margin)))
    
    # Again, extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds]

    # Fit a second order polynomial to each
    if len(leftx) != 0:
        left_fit_new = np.polyfit(lefty, leftx, 2)
    if len(rightx) != 0:
        right_fit_new = np.polyfit(righty, rightx, 2)

    return left_fit_new, right_fit_new, left_lane_inds, right_lane_inds
In [39]:
img = cv2.imread('./test_images/test5.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
margin = 80

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

undist = cal_undistort(img, objpoints, imgpoints)

combined_binary = color_grad_thresh(undist)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

# Perspective transform
binary_warped, perspective_M = corners_unwarp(combined_binary, src, dst)

left_fit2, right_fit2, left_lane_inds2, right_lane_inds2 = polyfit_using_prev(binary_warped, left_fit, right_fit)

# Generate x and y values for plotting
ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
left_fitx = left_fit2[0]*ploty**2 + left_fit2[1]*ploty + left_fit2[2]
right_fitx = right_fit2[0]*ploty**2 + right_fit2[1]*ploty + right_fit2[2]

# Create an image to draw on and an image to show the selection window
out_img = np.dstack((binary_warped, binary_warped, binary_warped))*255
window_img = np.zeros_like(out_img)

# Color in left and right line pixels
nonzero = binary_warped.nonzero()
nonzeroy = np.array(nonzero[0])
nonzerox = np.array(nonzero[1])
out_img[nonzeroy[left_lane_inds2], nonzerox[left_lane_inds2]] = [255, 0, 0]
out_img[nonzeroy[right_lane_inds2], nonzerox[right_lane_inds2]] = [0, 0, 255]

# Generate a polygon to illustrate the search window area
# And recast the x and y points into usable format for cv2.fillPoly()
left_line_window1 = np.array([np.transpose(np.vstack([left_fitx-margin, ploty]))])
left_line_window2 = np.array([np.flipud(np.transpose(np.vstack([left_fitx+margin, ploty])))])
left_line_pts = np.hstack((left_line_window1, left_line_window2))
right_line_window1 = np.array([np.transpose(np.vstack([right_fitx-margin, ploty]))])
right_line_window2 = np.array([np.flipud(np.transpose(np.vstack([right_fitx+margin, ploty])))])
right_line_pts = np.hstack((right_line_window1, right_line_window2))

# Draw the lane onto the warped blank image
cv2.fillPoly(window_img, np.int_([left_line_pts]), (0,255, 0))
cv2.fillPoly(window_img, np.int_([right_line_pts]), (0,255, 0))
result = cv2.addWeighted(out_img, 1, window_img, 0.3, 0)
plt.imshow(result)
plt.plot(left_fitx, ploty, color='yellow')
plt.plot(right_fitx, ploty, color='yellow')
plt.xlim(0, 1280)
plt.ylim(720, 0)
Out[39]:
(720, 0)

Step 5: Measuring Curvature

Compute the radius of curvature of the fit. The radius of curvature is computed according to the formula and method described in the classroom material.

In [54]:
def meaure_curvature_center(img, left_fit, right_fit, left_lane_inds, right_lane_inds):
    # Define conversions in x and y from pixels space to meters
    ym_per_pix = 30/720 # meters per pixel in y dimension
    xm_per_pix = 3.7/700 # meters per pixel in x dimension
    left_curverad, right_curverad, center_dist = (0, 0, 0)
    
    # Define y-value where we want radius of curvature
    # I'll choose the maximum y-value, corresponding to the bottom of the image, same as in class material
    ploty = np.linspace(0, img.shape[0]-1, img.shape[0] )
    y_eval = np.max(ploty)
    
    # Identify the x and y positions of all nonzero pixels in the image
    nonzero = img.nonzero()
    nonzeroy = np.array(nonzero[0])
    nonzerox = np.array(nonzero[1])
    
    # Again, extract left and right line pixel positions
    leftx = nonzerox[left_lane_inds]
    lefty = nonzeroy[left_lane_inds] 
    rightx = nonzerox[right_lane_inds]
    righty = nonzeroy[right_lane_inds]
    
    if len(leftx) != 0 and len(rightx) != 0:
        # Fit new polynomials to x,y in world space
        left_fit_cr = np.polyfit(lefty*ym_per_pix, leftx*xm_per_pix, 2)
        right_fit_cr = np.polyfit(righty*ym_per_pix, rightx*xm_per_pix, 2)

        # Calculate the new radi of curvature
        left_curverad = ((1 + (2*left_fit_cr[0]*y_eval*ym_per_pix + left_fit_cr[1])**2)**1.5) / np.absolute(2*left_fit_cr[0])
        right_curverad = ((1 + (2*right_fit_cr[0]*y_eval*ym_per_pix + right_fit_cr[1])**2)**1.5) / np.absolute(2*right_fit_cr[0])
    
    if left_fit is not None and right_fit is not None:
        # Calculate distance from center
        car_position = img.shape[1]/2
        left_fit_x_int = left_fit[0]*img.shape[0]**2 + left_fit[1]*img.shape[0] + left_fit[2]
        right_fit_x_int = right_fit[0]*img.shape[0]**2 + right_fit[1]*img.shape[0] + right_fit[2]
        lane_center_position = (right_fit_x_int + left_fit_x_int) /2
        center_dist = (car_position - lane_center_position) * xm_per_pix
    
    return left_curverad, right_curverad, center_dist 
    
In [55]:
img = cv2.imread('./test_images/test5.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

undist = cal_undistort(img, objpoints, imgpoints)

combined_binary = color_grad_thresh(undist)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

# Perspective transform
binary_warped, perspective_M = corners_unwarp(combined_binary, src, dst)

# Test sliding window
left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window(binary_warped)

left_curverad, right_curverad, center_dist = meaure_curvature_center(binary_warped, left_fit, right_fit,
                                                                     left_lane_inds, right_lane_inds)

print('Radius of curvature for example:', right_curverad, 'm,', left_curverad, 'm')
print('Distance from lane center for example:', center_dist, 'm')
Radius of curvature for example: 1321.01990855 m, 1026.86607422 m
Distance from lane center for example: 0.133339362526 m

Note: The curvature of 1.5 km and 1.3 km is close to the 1 km mentioned in the course material

Drawing

Now we have a good measurement of the line positions in warped space, it's time to project the measurement back down onto the road!

In [56]:
def drawing(original_img, binary_warped, left_fit, right_fit, Minv):
    # Create an image to draw the lines on
    warp_zero = np.zeros_like(binary_warped).astype(np.uint8)
    color_warp = np.dstack((warp_zero, warp_zero, warp_zero))
    
    # Generate x and y values for plotting
    ploty = np.linspace(0, binary_warped.shape[0]-1, binary_warped.shape[0] )
    left_fitx = left_fit[0]*ploty**2 + left_fit[1]*ploty + left_fit[2]
    right_fitx = right_fit[0]*ploty**2 + right_fit[1]*ploty + right_fit[2]

    # Recast the x and y points into usable format for cv2.fillPoly()
    pts_left = np.array([np.transpose(np.vstack([left_fitx, ploty]))])
    pts_right = np.array([np.flipud(np.transpose(np.vstack([right_fitx, ploty])))])
    pts = np.hstack((pts_left, pts_right))

    # Draw the lane onto the warped blank image
    cv2.fillPoly(color_warp, np.int_([pts]), (0,255, 0))
    cv2.polylines(color_warp, np.int32([pts_left]), isClosed=False, color=(255,0,255), thickness=15)
    cv2.polylines(color_warp, np.int32([pts_right]), isClosed=False, color=(0,255,255), thickness=15)

    # Warp the blank back to original image space using inverse perspective matrix (Minv)
    newwarp = cv2.warpPerspective(color_warp, Minv, (binary_warped.shape[1], binary_warped.shape[0])) 
    # Combine the result with the original image
    result = cv2.addWeighted(original_img, 1, newwarp, 0.3, 0)
    return result
In [57]:
img = cv2.imread('./test_images/test5.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

undist = cal_undistort(img, objpoints, imgpoints)

combined_binary = color_grad_thresh(undist)

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
src = dist_pickle["src"]
dst = dist_pickle["dst"]

# Perspective transform
binary_warped, perspective_M = corners_unwarp(combined_binary, src, dst)
Minv = cv2.getPerspectiveTransform(dst, src)

# Test sliding window
left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window(binary_warped)

output = drawing(undist, binary_warped, left_fit, right_fit, Minv)
plt.imshow(output)
Out[57]:
<matplotlib.image.AxesImage at 0x24037f39358>

Write Curvature radius and distance from center data to img

In [58]:
def write_data(img, curve_radius, center_dist):
    new_img = np.copy(img)
    font = cv2.FONT_HERSHEY_DUPLEX
    text = 'Curve radius: ' + '{:04.2f}'.format(curve_radius) + 'm'
    cv2.putText(new_img, text, (40,70), font, 1.5, (200,255,155), 2, cv2.LINE_AA)
    direction = ''
    if center_dist > 0:
        direction = 'right'
    elif center_dist < 0:
        direction = 'left'
    abs_center_dist = abs(center_dist)
    text = '{:04.3f}'.format(abs_center_dist) + 'm ' + direction + ' of center'
    cv2.putText(new_img, text, (40,120), font, 1.5, (200,255,155), 2, cv2.LINE_AA)
    
    return new_img
In [59]:
result = write_data(output, (right_curverad+left_curverad)/2, center_dist)
plt.imshow(result)
Out[59]:
<matplotlib.image.AxesImage at 0x2403af38518>

Image Processing Pipeline

Combine step 1 through step 5, define image processing pipeline

In [60]:
def process_img(img):
    
    # Camera calibration
    undist = cal_undistort(img, objpoints, imgpoints)
    
    # Binary threshold
    combined_binary = color_grad_thresh(undist)

    # Read in the saved objpoints and imgpoints
    dist_pickle = pickle.load( open( "src_dst.p", "rb" ) )
    src = dist_pickle["src"]
    dst = dist_pickle["dst"]

    # Perspective transform
    binary_warped, perspective_M = corners_unwarp(combined_binary, src, dst)
    
    # Inverse trnasform
    Minv = cv2.getPerspectiveTransform(dst, src)
    
    # Test sliding window
    left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window(binary_warped)

    output = drawing(undist, binary_warped, left_fit, right_fit, Minv)
    
    left_curverad, right_curverad, center_dist = meaure_curvature_center(binary_warped, left_fit, right_fit,
                                                                     left_lane_inds, right_lane_inds)
    
    result = write_data(output, (right_curverad+left_curverad)/2, center_dist)
    
    return result
In [61]:
# Read in test images
test_imgs1 = glob.glob('./test_images/test*.jpg')
test_imgs2 = glob.glob('./test_images/straight_lines*.jpg')
test_imgs = test_imgs1 + test_imgs2

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

for i, fname in enumerate(test_imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    undist = cal_undistort(img, objpoints, imgpoints)
    output = process_img(img)
    
    # Visualization
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
    f.subplots_adjust(hspace = .2, wspace=.05)
    ax1.imshow(undist)
    ax1.set_title('Undistorted Image: {}'.format(fname), fontsize=10)
    ax2.imshow(output)
    ax2.set_title('Final Processed Image: {}'.format(fname), fontsize=10)

Define Line Class to Store Data

In [62]:
class Line():
    def __init__(self):
        # was the line detected in the last iteration
        self.detected = False
        # polynomial coefficients averaged over the last n iterations
        self.best_fit = None
        # polynomial coefficients for the most recent fit
        self.current_fit = None
        # polynomial coefficients of the last n fits 
        self.recent_fits = [] 
        # radius of curvature of the line in some units
        self.radius_of_curvature = None
        # distance in meters of vehicle cernter from the line
        self.line_base_pos = None
        # difference in fit coefficients between last and new fits
        self.diffs = np.array([0,0,0], dtype='float')
        #x values for detected line pixels
        self.allx = None  
        #y values for detected line pixels
        self.ally = None
    
    def add_fit(self, fit, inds):
        # add a found fit to Line
        if fit is not None:
            if self.current_fit != None:
                # Check with most recent fit
                self.diffs = abs(fit - self.current_fit)
                if self.diffs[0] > 0.001 or self.diffs[1] > 1.0 or self.diffs[2] > 1000.:
                    # abort the bad fit if it differs from last fit a lot
                    # unless there are not fits in the current_fit
                    self.detected = False
                else:
                    self.detected = True
                    self.current_fit = fit
                    self.recent_fits.append(fit)
                    if len(self.recent_fits)>3:#store 3 most recent fits
                        self.recent_fits = self.recent_fits[len(self.recent_fits)-3:]
                    self.best_fit = np.average(self.recent_fits, axis=0)
            else: # The first fit take it
                self.detected = True
                self.current_fit = fit
                self.recent_fits.append(fit)
                if len(self.recent_fits)>3:#store 3 most recent fits
                    self.recent_fits = self.recent_fits[len(self.recent_fits)-3:]
                self.best_fit = np.average(self.recent_fits, axis=0)
        else: # no new fit is found, fit = None
            self.detected = False
        
        if self.detected == False: # No good fit found, remove the oldest fit in recent_fit
            if len(self.recent_fits) > 0:
                self.recent_fits = self.recent_fits[:len(self.recent_fits)-1]
            if len(self.recent_fits) > 0:
                # if there are still entries in recent_fits, avarge
                self.best_fit = np.average(self.recent_fits, axis=0)
In [63]:
# Sanity check for left & right lines
def sanity_check_dir(left_fit, right_fit, shape):
        
    # Check x location of both lines
    left_fit_x_int = left_fit[0]*shape[0]**2 + left_fit[1]*shape[0] + left_fit[2]
    right_fit_x_int = right_fit[0]*shape[0]**2 + right_fit[1]*shape[0] + right_fit[2]
    x_int_diff = abs(right_fit_x_int-left_fit_x_int)
    
    if abs(600 - x_int_diff) > 100:
        # two lines are two wide or close, bad lines found, discard
        left_fit = None
        right_fit = None
        
    # Check they are roughly parallel is passed x location test
    if left_fit is not None and right_fit is not None:
        diffs = abs(left_fit - right_fit)         
        if diffs[0] > 0.001 or diffs[1] > 1.0 or diffs[2] > 1000.:
            # Two lines are not parallel abort bad lines
            left_fit = None
            right_fit = None
    
    return left_fit, right_fit

Define Video process pipeline

In [64]:
def process_vedio(img):
    # Camera calibration
    undist = cal_undistort(img, objpoints, imgpoints)
    
    # Binary threshold
    combined_binary = color_grad_thresh(undist)

    # Perspective transform
    binary_warped, perspective_M = corners_unwarp(combined_binary, src, dst)
    
    # Inverse trnasform
    Minv = cv2.getPerspectiveTransform(dst, src)
    
    # If both lanes are detected last frame, use polyfit_using_prev. Otherwise use sliding window search
    if left_line.detected == False or right_line.detected == False:
        left_fit, right_fit, left_lane_inds, right_lane_inds, visualization_data = sliding_window(binary_warped)
    else: 
        left_fit, right_fit, left_lane_inds, right_lane_inds = polyfit_using_prev(binary_warped, 
                                                            left_line.current_fit, right_line.current_fit)
    
    # Check the twos lines direction.
    if left_fit is not None and right_fit is not None:
        # Sanity check
        left_fit, right_fit = sanity_check_dir(left_fit, right_fit, img.shape)
            
    left_line.add_fit(left_fit, left_lane_inds)
    right_line.add_fit(right_fit, right_lane_inds)
    
    #print('L-best fit',left_line.best_fit)
    #print('L-current fit',left_line.current_fit)
    #print('Lfit', left_fit)
    #print('Rfit', right_fit)
    #print('diff',left_fit - right_fit)
    
    # Draw the current best fit
    if left_line.best_fit is not None and right_line.best_fit is not None:
        output = drawing(undist, binary_warped, left_line.best_fit, right_line.best_fit, Minv)
        left_curverad, right_curverad, center_dist = meaure_curvature_center(binary_warped, 
                                                        left_line.best_fit, right_line.best_fit,
                                                        left_lane_inds, right_lane_inds)
        result = write_data(output, (right_curverad+left_curverad)/2, center_dist)
    else:
        result = img
        
    return result
In [65]:
left_line = Line()
right_line = Line()

# Read in test images
test_imgs = glob.glob('./frame/frame*.jpg')
#test_imgs = glob.glob('./test_images/test*.jpg')
#test_imgs = ['./frame/frame1046.jpg']

# Read in the saved objpoints and imgpoints
dist_pickle = pickle.load( open( "calibration.p", "rb" ) )
objpoints = dist_pickle["objpoints"]
imgpoints = dist_pickle["imgpoints"]

for i, fname in enumerate(test_imgs):
    img = cv2.imread(fname)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    undist = cal_undistort(img, objpoints, imgpoints)
    output = process_vedio(img)
    
    # Visualization
    f, (ax1, ax2) = plt.subplots(1, 2, figsize=(20,10))
    f.subplots_adjust(hspace = .2, wspace=.05)
    ax1.imshow(undist)
    ax1.set_title('Undistorted Image: {}'.format(fname), fontsize=10)
    ax2.imshow(output)
    ax2.set_title('Final Processed Image: {}'.format(fname), fontsize=10)

Process Project Video

In [68]:
left_line = Line()
right_line = Line()
video_output1 = 'project_video_output.mp4'
video_input1 = VideoFileClip('project_video.mp4')
processed_video = video_input1.fl_image(process_vedio)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video project_video_output.mp4
[MoviePy] Writing video project_video_output.mp4
  0%|                                                                                         | 0/1261 [00:00<?, ?it/s]
  0%|                                                                                 | 1/1261 [00:00<15:51,  1.32it/s]
  0%|▏                                                                                | 2/1261 [00:01<15:49,  1.33it/s]
  0%|▏                                                                                | 3/1261 [00:02<15:52,  1.32it/s]
  0%|▎                                                                                | 4/1261 [00:03<15:49,  1.32it/s]
  0%|▎                                                                                | 5/1261 [00:03<15:47,  1.32it/s]
  0%|▍                                                                                | 6/1261 [00:04<15:49,  1.32it/s]
  1%|▍                                                                                | 7/1261 [00:05<16:19,  1.28it/s]
  1%|▌                                                                                | 8/1261 [00:06<16:29,  1.27it/s]
  1%|▌                                                                                | 9/1261 [00:06<16:17,  1.28it/s]
  1%|▋                                                                               | 10/1261 [00:07<16:10,  1.29it/s]
  1%|▋                                                                               | 11/1261 [00:08<16:02,  1.30it/s]
  1%|▊                                                                               | 12/1261 [00:09<15:59,  1.30it/s]
  1%|▊                                                                               | 13/1261 [00:09<15:56,  1.31it/s]
  1%|▉                                                                               | 14/1261 [00:10<16:18,  1.27it/s]
  1%|▉                                                                               | 15/1261 [00:11<16:32,  1.26it/s]
  1%|█                                                                               | 16/1261 [00:12<16:45,  1.24it/s]
  1%|█                                                                               | 17/1261 [00:13<16:34,  1.25it/s]
  1%|█▏                                                                              | 18/1261 [00:14<16:41,  1.24it/s]
  2%|█▏                                                                              | 19/1261 [00:14<16:48,  1.23it/s]
  2%|█▎                                                                              | 20/1261 [00:15<16:44,  1.24it/s]
  2%|█▎                                                                              | 21/1261 [00:16<16:50,  1.23it/s]
  2%|█▍                                                                              | 22/1261 [00:17<16:51,  1.23it/s]
  2%|█▍                                                                              | 23/1261 [00:18<16:57,  1.22it/s]
  2%|█▌                                                                              | 24/1261 [00:19<16:55,  1.22it/s]
  2%|█▌                                                                              | 25/1261 [00:19<16:50,  1.22it/s]
  2%|█▋                                                                              | 26/1261 [00:20<16:54,  1.22it/s]
  2%|█▋                                                                              | 27/1261 [00:21<16:59,  1.21it/s]
  2%|█▊                                                                              | 28/1261 [00:22<16:45,  1.23it/s]
  2%|█▊                                                                              | 29/1261 [00:23<16:37,  1.24it/s]
  2%|█▉                                                                              | 30/1261 [00:23<16:57,  1.21it/s]
  2%|█▉                                                                              | 31/1261 [00:24<17:02,  1.20it/s]
  3%|██                                                                              | 32/1261 [00:25<16:40,  1.23it/s]
  3%|██                                                                              | 33/1261 [00:26<16:20,  1.25it/s]
  3%|██▏                                                                             | 34/1261 [00:27<16:01,  1.28it/s]
  3%|██▏                                                                             | 35/1261 [00:27<15:48,  1.29it/s]
  3%|██▎                                                                             | 36/1261 [00:28<15:39,  1.30it/s]
  3%|██▎                                                                             | 37/1261 [00:29<15:32,  1.31it/s]
  3%|██▍                                                                             | 38/1261 [00:30<15:27,  1.32it/s]
  3%|██▍                                                                             | 39/1261 [00:30<15:28,  1.32it/s]
  3%|██▌                                                                             | 40/1261 [00:31<15:21,  1.33it/s]
  3%|██▌                                                                             | 41/1261 [00:32<15:09,  1.34it/s]
  3%|██▋                                                                             | 42/1261 [00:33<15:16,  1.33it/s]
  3%|██▋                                                                             | 43/1261 [00:33<15:21,  1.32it/s]
  3%|██▊                                                                             | 44/1261 [00:34<15:24,  1.32it/s]
  4%|██▊                                                                             | 45/1261 [00:35<15:25,  1.31it/s]
  4%|██▉                                                                             | 46/1261 [00:36<15:29,  1.31it/s]
  4%|██▉                                                                             | 47/1261 [00:36<15:29,  1.31it/s]
  4%|███                                                                             | 48/1261 [00:37<15:23,  1.31it/s]
  4%|███                                                                             | 49/1261 [00:38<15:30,  1.30it/s]
  4%|███▏                                                                            | 50/1261 [00:39<15:23,  1.31it/s]
  4%|███▏                                                                            | 51/1261 [00:39<15:17,  1.32it/s]
  4%|███▎                                                                            | 52/1261 [00:40<15:21,  1.31it/s]
  4%|███▎                                                                            | 53/1261 [00:41<15:13,  1.32it/s]
  4%|███▍                                                                            | 54/1261 [00:42<15:16,  1.32it/s]
  4%|███▍                                                                            | 55/1261 [00:42<15:17,  1.31it/s]
  4%|███▌                                                                            | 56/1261 [00:43<15:21,  1.31it/s]
  5%|███▌                                                                            | 57/1261 [00:44<15:15,  1.31it/s]
  5%|███▋                                                                            | 58/1261 [00:45<15:11,  1.32it/s]
  5%|███▋                                                                            | 59/1261 [00:46<15:20,  1.31it/s]
  5%|███▊                                                                            | 60/1261 [00:46<15:14,  1.31it/s]
  5%|███▊                                                                            | 61/1261 [00:47<15:15,  1.31it/s]
  5%|███▉                                                                            | 62/1261 [00:48<15:09,  1.32it/s]
  5%|███▉                                                                            | 63/1261 [00:49<15:08,  1.32it/s]
  5%|████                                                                            | 64/1261 [00:49<15:06,  1.32it/s]
  5%|████                                                                            | 65/1261 [00:50<15:11,  1.31it/s]
  5%|████▏                                                                           | 66/1261 [00:51<15:11,  1.31it/s]
  5%|████▎                                                                           | 67/1261 [00:52<15:05,  1.32it/s]
  5%|████▎                                                                           | 68/1261 [00:52<15:18,  1.30it/s]
  5%|████▍                                                                           | 69/1261 [00:53<15:10,  1.31it/s]
  6%|████▍                                                                           | 70/1261 [00:54<15:16,  1.30it/s]
  6%|████▌                                                                           | 71/1261 [00:55<15:14,  1.30it/s]
  6%|████▌                                                                           | 72/1261 [00:55<15:10,  1.31it/s]
  6%|████▋                                                                           | 73/1261 [00:56<15:03,  1.31it/s]
  6%|████▋                                                                           | 74/1261 [00:57<15:07,  1.31it/s]
  6%|████▊                                                                           | 75/1261 [00:58<15:06,  1.31it/s]
  6%|████▊                                                                           | 76/1261 [00:59<15:00,  1.32it/s]
  6%|████▉                                                                           | 77/1261 [00:59<14:56,  1.32it/s]
  6%|████▉                                                                           | 78/1261 [01:00<14:58,  1.32it/s]
  6%|█████                                                                           | 79/1261 [01:01<15:05,  1.31it/s]
  6%|█████                                                                           | 80/1261 [01:02<15:05,  1.30it/s]
  6%|█████▏                                                                          | 81/1261 [01:02<15:04,  1.30it/s]
  7%|█████▏                                                                          | 82/1261 [01:03<14:57,  1.31it/s]
  7%|█████▎                                                                          | 83/1261 [01:04<15:14,  1.29it/s]
  7%|█████▎                                                                          | 84/1261 [01:05<15:28,  1.27it/s]
  7%|█████▍                                                                          | 85/1261 [01:06<15:30,  1.26it/s]
  7%|█████▍                                                                          | 86/1261 [01:06<15:18,  1.28it/s]
  7%|█████▌                                                                          | 87/1261 [01:07<15:11,  1.29it/s]
  7%|█████▌                                                                          | 88/1261 [01:08<15:03,  1.30it/s]
  7%|█████▋                                                                          | 89/1261 [01:09<14:55,  1.31it/s]
  7%|█████▋                                                                          | 90/1261 [01:09<14:55,  1.31it/s]
  7%|█████▊                                                                          | 91/1261 [01:10<14:49,  1.32it/s]
  7%|█████▊                                                                          | 92/1261 [01:11<14:59,  1.30it/s]
  7%|█████▉                                                                          | 93/1261 [01:12<14:51,  1.31it/s]
  7%|█████▉                                                                          | 94/1261 [01:12<14:51,  1.31it/s]
  8%|██████                                                                          | 95/1261 [01:13<14:46,  1.32it/s]
  8%|██████                                                                          | 96/1261 [01:14<14:47,  1.31it/s]
  8%|██████▏                                                                         | 97/1261 [01:15<14:42,  1.32it/s]
  8%|██████▏                                                                         | 98/1261 [01:15<14:52,  1.30it/s]
  8%|██████▎                                                                         | 99/1261 [01:16<14:47,  1.31it/s]
  8%|██████▎                                                                        | 100/1261 [01:17<14:42,  1.32it/s]
  8%|██████▎                                                                        | 101/1261 [01:18<14:35,  1.33it/s]
  8%|██████▍                                                                        | 102/1261 [01:18<14:38,  1.32it/s]
  8%|██████▍                                                                        | 103/1261 [01:19<14:35,  1.32it/s]
  8%|██████▌                                                                        | 104/1261 [01:20<14:33,  1.32it/s]
  8%|██████▌                                                                        | 105/1261 [01:21<14:38,  1.32it/s]
  8%|██████▋                                                                        | 106/1261 [01:21<14:28,  1.33it/s]
  8%|██████▋                                                                        | 107/1261 [01:22<14:31,  1.32it/s]
  9%|██████▊                                                                        | 108/1261 [01:23<14:29,  1.33it/s]
  9%|██████▊                                                                        | 109/1261 [01:24<14:37,  1.31it/s]
  9%|██████▉                                                                        | 110/1261 [01:24<14:27,  1.33it/s]
  9%|██████▉                                                                        | 111/1261 [01:25<14:26,  1.33it/s]
  9%|███████                                                                        | 112/1261 [01:26<14:29,  1.32it/s]
  9%|███████                                                                        | 113/1261 [01:27<14:26,  1.33it/s]
  9%|███████▏                                                                       | 114/1261 [01:27<14:23,  1.33it/s]
  9%|███████▏                                                                       | 115/1261 [01:28<14:22,  1.33it/s]
  9%|███████▎                                                                       | 116/1261 [01:29<14:24,  1.32it/s]
  9%|███████▎                                                                       | 117/1261 [01:30<14:21,  1.33it/s]
  9%|███████▍                                                                       | 118/1261 [01:31<14:25,  1.32it/s]
  9%|███████▍                                                                       | 119/1261 [01:31<14:25,  1.32it/s]
 10%|███████▌                                                                       | 120/1261 [01:32<14:48,  1.28it/s]
 10%|███████▌                                                                       | 121/1261 [01:33<14:54,  1.28it/s]
 10%|███████▋                                                                       | 122/1261 [01:34<14:57,  1.27it/s]
 10%|███████▋                                                                       | 123/1261 [01:35<15:16,  1.24it/s]
 10%|███████▊                                                                       | 124/1261 [01:35<16:01,  1.18it/s]
 10%|███████▊                                                                       | 125/1261 [01:36<16:01,  1.18it/s]
 10%|███████▉                                                                       | 126/1261 [01:37<15:59,  1.18it/s]
 10%|███████▉                                                                       | 127/1261 [01:38<15:31,  1.22it/s]
 10%|████████                                                                       | 128/1261 [01:39<15:06,  1.25it/s]
 10%|████████                                                                       | 129/1261 [01:39<14:54,  1.27it/s]
 10%|████████▏                                                                      | 130/1261 [01:40<14:39,  1.29it/s]
 10%|████████▏                                                                      | 131/1261 [01:41<14:35,  1.29it/s]
 10%|████████▎                                                                      | 132/1261 [01:42<14:26,  1.30it/s]
 11%|████████▎                                                                      | 133/1261 [01:42<14:30,  1.30it/s]
 11%|████████▍                                                                      | 134/1261 [01:43<14:16,  1.32it/s]
 11%|████████▍                                                                      | 135/1261 [01:44<14:15,  1.32it/s]
 11%|████████▌                                                                      | 136/1261 [01:45<14:11,  1.32it/s]
 11%|████████▌                                                                      | 137/1261 [01:46<14:17,  1.31it/s]
 11%|████████▋                                                                      | 138/1261 [01:46<14:10,  1.32it/s]
 11%|████████▋                                                                      | 139/1261 [01:47<14:07,  1.32it/s]
 11%|████████▊                                                                      | 140/1261 [01:48<14:04,  1.33it/s]
 11%|████████▊                                                                      | 141/1261 [01:49<14:02,  1.33it/s]
 11%|████████▉                                                                      | 142/1261 [01:49<14:04,  1.33it/s]
 11%|████████▉                                                                      | 143/1261 [01:50<14:03,  1.33it/s]
 11%|█████████                                                                      | 144/1261 [01:51<14:11,  1.31it/s]
 11%|█████████                                                                      | 145/1261 [01:52<14:08,  1.32it/s]
 12%|█████████▏                                                                     | 146/1261 [01:52<14:04,  1.32it/s]
 12%|█████████▏                                                                     | 147/1261 [01:53<14:01,  1.32it/s]
 12%|█████████▎                                                                     | 148/1261 [01:54<14:03,  1.32it/s]
 12%|█████████▎                                                                     | 149/1261 [01:55<13:57,  1.33it/s]
 12%|█████████▍                                                                     | 150/1261 [01:55<14:05,  1.31it/s]
 12%|█████████▍                                                                     | 151/1261 [01:56<14:03,  1.32it/s]
 12%|█████████▌                                                                     | 152/1261 [01:57<13:59,  1.32it/s]
 12%|█████████▌                                                                     | 153/1261 [01:58<13:56,  1.32it/s]
 12%|█████████▋                                                                     | 154/1261 [01:58<13:59,  1.32it/s]
 12%|█████████▋                                                                     | 155/1261 [01:59<13:55,  1.32it/s]
 12%|█████████▊                                                                     | 156/1261 [02:00<13:58,  1.32it/s]
 12%|█████████▊                                                                     | 157/1261 [02:01<14:00,  1.31it/s]
 13%|█████████▉                                                                     | 158/1261 [02:01<13:57,  1.32it/s]
 13%|█████████▉                                                                     | 159/1261 [02:02<13:48,  1.33it/s]
 13%|██████████                                                                     | 160/1261 [02:03<13:52,  1.32it/s]
 13%|██████████                                                                     | 161/1261 [02:04<13:49,  1.33it/s]
 13%|██████████▏                                                                    | 162/1261 [02:04<13:48,  1.33it/s]
 13%|██████████▏                                                                    | 163/1261 [02:05<13:54,  1.32it/s]
 13%|██████████▎                                                                    | 164/1261 [02:06<13:54,  1.31it/s]
 13%|██████████▎                                                                    | 165/1261 [02:07<13:53,  1.31it/s]
 13%|██████████▍                                                                    | 166/1261 [02:07<13:49,  1.32it/s]
 13%|██████████▍                                                                    | 167/1261 [02:08<13:46,  1.32it/s]
 13%|██████████▌                                                                    | 168/1261 [02:09<13:38,  1.33it/s]
 13%|██████████▌                                                                    | 169/1261 [02:10<13:38,  1.33it/s]
 13%|██████████▋                                                                    | 170/1261 [02:10<13:35,  1.34it/s]
 14%|██████████▋                                                                    | 171/1261 [02:11<13:28,  1.35it/s]
 14%|██████████▊                                                                    | 172/1261 [02:12<13:30,  1.34it/s]
 14%|██████████▊                                                                    | 173/1261 [02:13<13:36,  1.33it/s]
 14%|██████████▉                                                                    | 174/1261 [02:13<13:35,  1.33it/s]
 14%|██████████▉                                                                    | 175/1261 [02:14<13:40,  1.32it/s]
 14%|███████████                                                                    | 176/1261 [02:15<13:38,  1.33it/s]
 14%|███████████                                                                    | 177/1261 [02:16<13:41,  1.32it/s]
 14%|███████████▏                                                                   | 178/1261 [02:16<13:38,  1.32it/s]
 14%|███████████▏                                                                   | 179/1261 [02:17<13:40,  1.32it/s]
 14%|███████████▎                                                                   | 180/1261 [02:18<13:32,  1.33it/s]
 14%|███████████▎                                                                   | 181/1261 [02:19<13:36,  1.32it/s]
 14%|███████████▍                                                                   | 182/1261 [02:19<13:35,  1.32it/s]
 15%|███████████▍                                                                   | 183/1261 [02:20<13:30,  1.33it/s]
 15%|███████████▌                                                                   | 184/1261 [02:21<13:34,  1.32it/s]
 15%|███████████▌                                                                   | 185/1261 [02:22<13:36,  1.32it/s]
 15%|███████████▋                                                                   | 186/1261 [02:23<14:02,  1.28it/s]
 15%|███████████▋                                                                   | 187/1261 [02:23<13:56,  1.28it/s]
 15%|███████████▊                                                                   | 188/1261 [02:24<13:52,  1.29it/s]
 15%|███████████▊                                                                   | 189/1261 [02:25<13:38,  1.31it/s]
 15%|███████████▉                                                                   | 190/1261 [02:26<13:36,  1.31it/s]
 15%|███████████▉                                                                   | 191/1261 [02:26<13:31,  1.32it/s]
 15%|████████████                                                                   | 192/1261 [02:27<13:23,  1.33it/s]
 15%|████████████                                                                   | 193/1261 [02:28<13:24,  1.33it/s]
 15%|████████████▏                                                                  | 194/1261 [02:29<13:22,  1.33it/s]
 15%|████████████▏                                                                  | 195/1261 [02:29<13:26,  1.32it/s]
 16%|████████████▎                                                                  | 196/1261 [02:30<13:23,  1.33it/s]
 16%|████████████▎                                                                  | 197/1261 [02:31<13:28,  1.32it/s]
 16%|████████████▍                                                                  | 198/1261 [02:32<13:27,  1.32it/s]
 16%|████████████▍                                                                  | 199/1261 [02:32<13:28,  1.31it/s]
 16%|████████████▌                                                                  | 200/1261 [02:33<13:24,  1.32it/s]
 16%|████████████▌                                                                  | 201/1261 [02:34<13:26,  1.31it/s]
 16%|████████████▋                                                                  | 202/1261 [02:35<13:21,  1.32it/s]
 16%|████████████▋                                                                  | 203/1261 [02:35<13:20,  1.32it/s]
 16%|████████████▊                                                                  | 204/1261 [02:36<13:17,  1.32it/s]
 16%|████████████▊                                                                  | 205/1261 [02:37<13:20,  1.32it/s]
 16%|████████████▉                                                                  | 206/1261 [02:38<13:18,  1.32it/s]
 16%|████████████▉                                                                  | 207/1261 [02:39<13:15,  1.32it/s]
 16%|█████████████                                                                  | 208/1261 [02:39<13:33,  1.29it/s]
 17%|█████████████                                                                  | 209/1261 [02:40<13:45,  1.27it/s]
 17%|█████████████▏                                                                 | 210/1261 [02:41<14:06,  1.24it/s]
 17%|█████████████▏                                                                 | 211/1261 [02:42<13:58,  1.25it/s]
 17%|█████████████▎                                                                 | 212/1261 [02:43<14:16,  1.22it/s]
 17%|█████████████▎                                                                 | 213/1261 [02:43<14:04,  1.24it/s]
 17%|█████████████▍                                                                 | 214/1261 [02:44<14:10,  1.23it/s]
 17%|█████████████▍                                                                 | 215/1261 [02:45<14:02,  1.24it/s]
 17%|█████████████▌                                                                 | 216/1261 [02:46<14:01,  1.24it/s]
 17%|█████████████▌                                                                 | 217/1261 [02:47<13:58,  1.25it/s]
 17%|█████████████▋                                                                 | 218/1261 [02:47<13:40,  1.27it/s]
 17%|█████████████▋                                                                 | 219/1261 [02:48<13:33,  1.28it/s]
 17%|█████████████▊                                                                 | 220/1261 [02:49<13:28,  1.29it/s]
 18%|█████████████▊                                                                 | 221/1261 [02:50<13:54,  1.25it/s]
 18%|█████████████▉                                                                 | 222/1261 [02:51<14:13,  1.22it/s]
 18%|█████████████▉                                                                 | 223/1261 [02:52<14:34,  1.19it/s]
 18%|██████████████                                                                 | 224/1261 [02:52<14:25,  1.20it/s]
 18%|██████████████                                                                 | 225/1261 [02:53<14:14,  1.21it/s]
 18%|██████████████▏                                                                | 226/1261 [02:54<14:09,  1.22it/s]
 18%|██████████████▏                                                                | 227/1261 [02:55<14:04,  1.22it/s]
 18%|██████████████▎                                                                | 228/1261 [02:56<14:00,  1.23it/s]
 18%|██████████████▎                                                                | 229/1261 [02:56<13:49,  1.24it/s]
 18%|██████████████▍                                                                | 230/1261 [02:57<13:45,  1.25it/s]
 18%|██████████████▍                                                                | 231/1261 [02:58<13:43,  1.25it/s]
 18%|██████████████▌                                                                | 232/1261 [02:59<13:36,  1.26it/s]
 18%|██████████████▌                                                                | 233/1261 [02:59<13:31,  1.27it/s]
 19%|██████████████▋                                                                | 234/1261 [03:00<13:26,  1.27it/s]
 19%|██████████████▋                                                                | 235/1261 [03:01<13:27,  1.27it/s]
 19%|██████████████▊                                                                | 236/1261 [03:02<13:40,  1.25it/s]
 19%|██████████████▊                                                                | 237/1261 [03:03<13:53,  1.23it/s]
 19%|██████████████▉                                                                | 238/1261 [03:04<14:14,  1.20it/s]
 19%|██████████████▉                                                                | 239/1261 [03:05<14:30,  1.17it/s]
 19%|███████████████                                                                | 240/1261 [03:05<14:28,  1.17it/s]
 19%|███████████████                                                                | 241/1261 [03:06<14:15,  1.19it/s]
 19%|███████████████▏                                                               | 242/1261 [03:07<13:56,  1.22it/s]
 19%|███████████████▏                                                               | 243/1261 [03:08<13:46,  1.23it/s]
 19%|███████████████▎                                                               | 244/1261 [03:09<13:35,  1.25it/s]
 19%|███████████████▎                                                               | 245/1261 [03:09<13:27,  1.26it/s]
 20%|███████████████▍                                                               | 246/1261 [03:10<13:24,  1.26it/s]
 20%|███████████████▍                                                               | 247/1261 [03:11<13:19,  1.27it/s]
 20%|███████████████▌                                                               | 248/1261 [03:12<13:16,  1.27it/s]
 20%|███████████████▌                                                               | 249/1261 [03:12<13:21,  1.26it/s]
 20%|███████████████▋                                                               | 250/1261 [03:13<13:15,  1.27it/s]
 20%|███████████████▋                                                               | 251/1261 [03:14<13:14,  1.27it/s]
 20%|███████████████▊                                                               | 252/1261 [03:15<13:15,  1.27it/s]
 20%|███████████████▊                                                               | 253/1261 [03:16<13:10,  1.27it/s]
 20%|███████████████▉                                                               | 254/1261 [03:16<13:10,  1.27it/s]
 20%|███████████████▉                                                               | 255/1261 [03:17<13:07,  1.28it/s]
 20%|████████████████                                                               | 256/1261 [03:18<13:09,  1.27it/s]
 20%|████████████████                                                               | 257/1261 [03:19<13:13,  1.27it/s]
 20%|████████████████▏                                                              | 258/1261 [03:20<13:09,  1.27it/s]
 21%|████████████████▏                                                              | 259/1261 [03:20<13:07,  1.27it/s]
 21%|████████████████▎                                                              | 260/1261 [03:21<13:08,  1.27it/s]
 21%|████████████████▎                                                              | 261/1261 [03:22<13:05,  1.27it/s]
 21%|████████████████▍                                                              | 262/1261 [03:23<13:03,  1.28it/s]
 21%|████████████████▍                                                              | 263/1261 [03:23<13:02,  1.28it/s]
 21%|████████████████▌                                                              | 264/1261 [03:24<12:55,  1.29it/s]
 21%|████████████████▌                                                              | 265/1261 [03:25<12:58,  1.28it/s]
 21%|████████████████▋                                                              | 266/1261 [03:26<12:59,  1.28it/s]
 21%|████████████████▋                                                              | 267/1261 [03:27<12:59,  1.28it/s]
 21%|████████████████▊                                                              | 268/1261 [03:27<12:57,  1.28it/s]
 21%|████████████████▊                                                              | 269/1261 [03:28<12:57,  1.28it/s]
 21%|████████████████▉                                                              | 270/1261 [03:29<12:57,  1.28it/s]
 21%|████████████████▉                                                              | 271/1261 [03:30<12:58,  1.27it/s]
 22%|█████████████████                                                              | 272/1261 [03:30<12:54,  1.28it/s]
 22%|█████████████████                                                              | 273/1261 [03:31<12:55,  1.27it/s]
 22%|█████████████████▏                                                             | 274/1261 [03:32<12:56,  1.27it/s]
 22%|█████████████████▏                                                             | 275/1261 [03:33<12:59,  1.27it/s]
 22%|█████████████████▎                                                             | 276/1261 [03:34<13:02,  1.26it/s]
 22%|█████████████████▎                                                             | 277/1261 [03:34<13:01,  1.26it/s]
 22%|█████████████████▍                                                             | 278/1261 [03:35<13:09,  1.25it/s]
 22%|█████████████████▍                                                             | 279/1261 [03:36<13:09,  1.24it/s]
 22%|█████████████████▌                                                             | 280/1261 [03:37<13:11,  1.24it/s]
 22%|█████████████████▌                                                             | 281/1261 [03:38<13:07,  1.25it/s]
 22%|█████████████████▋                                                             | 282/1261 [03:38<13:00,  1.25it/s]
 22%|█████████████████▋                                                             | 283/1261 [03:39<12:55,  1.26it/s]
 23%|█████████████████▊                                                             | 284/1261 [03:40<12:54,  1.26it/s]
 23%|█████████████████▊                                                             | 285/1261 [03:41<12:51,  1.26it/s]
 23%|█████████████████▉                                                             | 286/1261 [03:42<12:52,  1.26it/s]
 23%|█████████████████▉                                                             | 287/1261 [03:42<12:53,  1.26it/s]
 23%|██████████████████                                                             | 288/1261 [03:43<12:49,  1.26it/s]
 23%|██████████████████                                                             | 289/1261 [03:44<12:49,  1.26it/s]
 23%|██████████████████▏                                                            | 290/1261 [03:45<12:46,  1.27it/s]
 23%|██████████████████▏                                                            | 291/1261 [03:46<12:51,  1.26it/s]
 23%|██████████████████▎                                                            | 292/1261 [03:46<12:46,  1.26it/s]
 23%|██████████████████▎                                                            | 293/1261 [03:47<12:49,  1.26it/s]
 23%|██████████████████▍                                                            | 294/1261 [03:48<12:49,  1.26it/s]
 23%|██████████████████▍                                                            | 295/1261 [03:49<12:50,  1.25it/s]
 23%|██████████████████▌                                                            | 296/1261 [03:50<12:45,  1.26it/s]
 24%|██████████████████▌                                                            | 297/1261 [03:50<12:44,  1.26it/s]
 24%|██████████████████▋                                                            | 298/1261 [03:51<12:42,  1.26it/s]
 24%|██████████████████▋                                                            | 299/1261 [03:52<12:33,  1.28it/s]
 24%|██████████████████▊                                                            | 300/1261 [03:53<12:31,  1.28it/s]
 24%|██████████████████▊                                                            | 301/1261 [03:53<12:34,  1.27it/s]
 24%|██████████████████▉                                                            | 302/1261 [03:54<12:34,  1.27it/s]
 24%|██████████████████▉                                                            | 303/1261 [03:55<12:33,  1.27it/s]
 24%|███████████████████                                                            | 304/1261 [03:56<12:29,  1.28it/s]
 24%|███████████████████                                                            | 305/1261 [03:57<12:31,  1.27it/s]
 24%|███████████████████▏                                                           | 306/1261 [03:57<12:33,  1.27it/s]
 24%|███████████████████▏                                                           | 307/1261 [03:58<12:26,  1.28it/s]
 24%|███████████████████▎                                                           | 308/1261 [03:59<12:28,  1.27it/s]
 25%|███████████████████▎                                                           | 309/1261 [04:00<12:54,  1.23it/s]
 25%|███████████████████▍                                                           | 310/1261 [04:01<12:57,  1.22it/s]
 25%|███████████████████▍                                                           | 311/1261 [04:02<12:50,  1.23it/s]
 25%|███████████████████▌                                                           | 312/1261 [04:02<12:45,  1.24it/s]
 25%|███████████████████▌                                                           | 313/1261 [04:03<12:33,  1.26it/s]
 25%|███████████████████▋                                                           | 314/1261 [04:04<12:42,  1.24it/s]
 25%|███████████████████▋                                                           | 315/1261 [04:05<12:49,  1.23it/s]
 25%|███████████████████▊                                                           | 316/1261 [04:06<12:48,  1.23it/s]
 25%|███████████████████▊                                                           | 317/1261 [04:06<12:43,  1.24it/s]
 25%|███████████████████▉                                                           | 318/1261 [04:07<12:34,  1.25it/s]
 25%|███████████████████▉                                                           | 319/1261 [04:08<12:27,  1.26it/s]
 25%|████████████████████                                                           | 320/1261 [04:09<12:24,  1.26it/s]
 25%|████████████████████                                                           | 321/1261 [04:09<12:23,  1.26it/s]
 26%|████████████████████▏                                                          | 322/1261 [04:10<12:23,  1.26it/s]
 26%|████████████████████▏                                                          | 323/1261 [04:11<12:22,  1.26it/s]
 26%|████████████████████▎                                                          | 324/1261 [04:12<12:18,  1.27it/s]
 26%|████████████████████▎                                                          | 325/1261 [04:13<12:23,  1.26it/s]
 26%|████████████████████▍                                                          | 326/1261 [04:13<12:22,  1.26it/s]
 26%|████████████████████▍                                                          | 327/1261 [04:14<12:21,  1.26it/s]
 26%|████████████████████▌                                                          | 328/1261 [04:15<12:18,  1.26it/s]
 26%|████████████████████▌                                                          | 329/1261 [04:16<12:18,  1.26it/s]
 26%|████████████████████▋                                                          | 330/1261 [04:17<12:17,  1.26it/s]
 26%|████████████████████▋                                                          | 331/1261 [04:17<12:18,  1.26it/s]
 26%|████████████████████▊                                                          | 332/1261 [04:18<12:10,  1.27it/s]
 26%|████████████████████▊                                                          | 333/1261 [04:19<12:09,  1.27it/s]
 26%|████████████████████▉                                                          | 334/1261 [04:20<12:11,  1.27it/s]
 27%|████████████████████▉                                                          | 335/1261 [04:21<12:12,  1.26it/s]
 27%|█████████████████████                                                          | 336/1261 [04:21<12:13,  1.26it/s]
 27%|█████████████████████                                                          | 337/1261 [04:22<12:22,  1.25it/s]
 27%|█████████████████████▏                                                         | 338/1261 [04:23<12:22,  1.24it/s]
 27%|█████████████████████▏                                                         | 339/1261 [04:24<12:21,  1.24it/s]
 27%|█████████████████████▎                                                         | 340/1261 [04:25<12:22,  1.24it/s]
 27%|█████████████████████▎                                                         | 341/1261 [04:25<12:28,  1.23it/s]
 27%|█████████████████████▍                                                         | 342/1261 [04:26<12:21,  1.24it/s]
 27%|█████████████████████▍                                                         | 343/1261 [04:27<12:20,  1.24it/s]
 27%|█████████████████████▌                                                         | 344/1261 [04:28<12:12,  1.25it/s]
 27%|█████████████████████▌                                                         | 345/1261 [04:29<12:14,  1.25it/s]
 27%|█████████████████████▋                                                         | 346/1261 [04:29<12:07,  1.26it/s]
 28%|█████████████████████▋                                                         | 347/1261 [04:30<12:06,  1.26it/s]
 28%|█████████████████████▊                                                         | 348/1261 [04:31<12:04,  1.26it/s]
 28%|█████████████████████▊                                                         | 349/1261 [04:32<12:03,  1.26it/s]
 28%|█████████████████████▉                                                         | 350/1261 [04:33<11:57,  1.27it/s]
 28%|█████████████████████▉                                                         | 351/1261 [04:33<11:56,  1.27it/s]
 28%|██████████████████████                                                         | 352/1261 [04:34<11:54,  1.27it/s]
 28%|██████████████████████                                                         | 353/1261 [04:35<11:54,  1.27it/s]
 28%|██████████████████████▏                                                        | 354/1261 [04:36<11:51,  1.27it/s]
 28%|██████████████████████▏                                                        | 355/1261 [04:36<11:50,  1.27it/s]
 28%|██████████████████████▎                                                        | 356/1261 [04:37<11:47,  1.28it/s]
 28%|██████████████████████▎                                                        | 357/1261 [04:38<11:46,  1.28it/s]
 28%|██████████████████████▍                                                        | 358/1261 [04:39<11:45,  1.28it/s]
 28%|██████████████████████▍                                                        | 359/1261 [04:40<11:46,  1.28it/s]
 29%|██████████████████████▌                                                        | 360/1261 [04:40<11:44,  1.28it/s]
 29%|██████████████████████▌                                                        | 361/1261 [04:41<11:44,  1.28it/s]
 29%|██████████████████████▋                                                        | 362/1261 [04:42<11:41,  1.28it/s]
 29%|██████████████████████▋                                                        | 363/1261 [04:43<11:42,  1.28it/s]
 29%|██████████████████████▊                                                        | 364/1261 [04:44<11:44,  1.27it/s]
 29%|██████████████████████▊                                                        | 365/1261 [04:44<11:57,  1.25it/s]
 29%|██████████████████████▉                                                        | 366/1261 [04:45<11:58,  1.25it/s]
 29%|██████████████████████▉                                                        | 367/1261 [04:46<11:52,  1.25it/s]
 29%|███████████████████████                                                        | 368/1261 [04:47<11:46,  1.26it/s]
 29%|███████████████████████                                                        | 369/1261 [04:47<11:41,  1.27it/s]
 29%|███████████████████████▏                                                       | 370/1261 [04:48<11:48,  1.26it/s]
 29%|███████████████████████▏                                                       | 371/1261 [04:49<11:44,  1.26it/s]
 30%|███████████████████████▎                                                       | 372/1261 [04:50<11:47,  1.26it/s]
 30%|███████████████████████▎                                                       | 373/1261 [04:51<12:27,  1.19it/s]
 30%|███████████████████████▍                                                       | 374/1261 [04:52<12:52,  1.15it/s]
 30%|███████████████████████▍                                                       | 375/1261 [04:53<12:45,  1.16it/s]
 30%|███████████████████████▌                                                       | 376/1261 [04:53<12:26,  1.19it/s]
 30%|███████████████████████▌                                                       | 377/1261 [04:54<12:09,  1.21it/s]
 30%|███████████████████████▋                                                       | 378/1261 [04:55<12:00,  1.23it/s]
 30%|███████████████████████▋                                                       | 379/1261 [04:56<11:51,  1.24it/s]
 30%|███████████████████████▊                                                       | 380/1261 [04:57<11:45,  1.25it/s]
 30%|███████████████████████▊                                                       | 381/1261 [04:57<11:37,  1.26it/s]
 30%|███████████████████████▉                                                       | 382/1261 [04:58<11:39,  1.26it/s]
 30%|███████████████████████▉                                                       | 383/1261 [04:59<11:44,  1.25it/s]
 30%|████████████████████████                                                       | 384/1261 [05:00<11:44,  1.25it/s]
 31%|████████████████████████                                                       | 385/1261 [05:01<11:40,  1.25it/s]
 31%|████████████████████████▏                                                      | 386/1261 [05:01<11:36,  1.26it/s]
 31%|████████████████████████▏                                                      | 387/1261 [05:02<11:34,  1.26it/s]
 31%|████████████████████████▎                                                      | 388/1261 [05:03<11:38,  1.25it/s]
 31%|████████████████████████▎                                                      | 389/1261 [05:04<11:50,  1.23it/s]
 31%|████████████████████████▍                                                      | 390/1261 [05:05<12:02,  1.20it/s]
 31%|████████████████████████▍                                                      | 391/1261 [05:06<12:13,  1.19it/s]
 31%|████████████████████████▌                                                      | 392/1261 [05:06<12:04,  1.20it/s]
 31%|████████████████████████▌                                                      | 393/1261 [05:07<11:57,  1.21it/s]
 31%|████████████████████████▋                                                      | 394/1261 [05:08<11:54,  1.21it/s]
 31%|████████████████████████▋                                                      | 395/1261 [05:09<11:50,  1.22it/s]
 31%|████████████████████████▊                                                      | 396/1261 [05:10<11:49,  1.22it/s]
 31%|████████████████████████▊                                                      | 397/1261 [05:10<11:50,  1.22it/s]
 32%|████████████████████████▉                                                      | 398/1261 [05:11<11:53,  1.21it/s]
 32%|████████████████████████▉                                                      | 399/1261 [05:12<12:09,  1.18it/s]
 32%|█████████████████████████                                                      | 400/1261 [05:13<12:14,  1.17it/s]
 32%|█████████████████████████                                                      | 401/1261 [05:14<12:27,  1.15it/s]
 32%|█████████████████████████▏                                                     | 402/1261 [05:15<12:34,  1.14it/s]
 32%|█████████████████████████▏                                                     | 403/1261 [05:16<12:38,  1.13it/s]
 32%|█████████████████████████▎                                                     | 404/1261 [05:17<12:36,  1.13it/s]
 32%|█████████████████████████▎                                                     | 405/1261 [05:17<12:26,  1.15it/s]
 32%|█████████████████████████▍                                                     | 406/1261 [05:18<12:20,  1.15it/s]
 32%|█████████████████████████▍                                                     | 407/1261 [05:19<12:03,  1.18it/s]
 32%|█████████████████████████▌                                                     | 408/1261 [05:20<11:48,  1.20it/s]
 32%|█████████████████████████▌                                                     | 409/1261 [05:21<11:36,  1.22it/s]
 33%|█████████████████████████▋                                                     | 410/1261 [05:22<11:31,  1.23it/s]
 33%|█████████████████████████▋                                                     | 411/1261 [05:22<11:24,  1.24it/s]
 33%|█████████████████████████▊                                                     | 412/1261 [05:23<11:20,  1.25it/s]
 33%|█████████████████████████▊                                                     | 413/1261 [05:24<11:24,  1.24it/s]
 33%|█████████████████████████▉                                                     | 414/1261 [05:25<11:29,  1.23it/s]
 33%|█████████████████████████▉                                                     | 415/1261 [05:26<11:33,  1.22it/s]
 33%|██████████████████████████                                                     | 416/1261 [05:26<11:40,  1.21it/s]
 33%|██████████████████████████                                                     | 417/1261 [05:27<11:50,  1.19it/s]
 33%|██████████████████████████▏                                                    | 418/1261 [05:28<11:52,  1.18it/s]
 33%|██████████████████████████▏                                                    | 419/1261 [05:29<11:53,  1.18it/s]
 33%|██████████████████████████▎                                                    | 420/1261 [05:30<11:52,  1.18it/s]
 33%|██████████████████████████▍                                                    | 421/1261 [05:31<11:45,  1.19it/s]
 33%|██████████████████████████▍                                                    | 422/1261 [05:32<11:47,  1.19it/s]
 34%|██████████████████████████▌                                                    | 423/1261 [05:32<11:34,  1.21it/s]
 34%|██████████████████████████▌                                                    | 424/1261 [05:33<11:44,  1.19it/s]
 34%|██████████████████████████▋                                                    | 425/1261 [05:34<11:51,  1.18it/s]
 34%|██████████████████████████▋                                                    | 426/1261 [05:35<11:51,  1.17it/s]
 34%|██████████████████████████▊                                                    | 427/1261 [05:36<11:50,  1.17it/s]
 34%|██████████████████████████▊                                                    | 428/1261 [05:37<11:57,  1.16it/s]
 34%|██████████████████████████▉                                                    | 429/1261 [05:38<12:05,  1.15it/s]
 34%|██████████████████████████▉                                                    | 430/1261 [05:38<12:13,  1.13it/s]
 34%|███████████████████████████                                                    | 431/1261 [05:39<11:52,  1.16it/s]
 34%|███████████████████████████                                                    | 432/1261 [05:40<11:42,  1.18it/s]
 34%|███████████████████████████▏                                                   | 433/1261 [05:41<11:24,  1.21it/s]
 34%|███████████████████████████▏                                                   | 434/1261 [05:42<11:13,  1.23it/s]
 34%|███████████████████████████▎                                                   | 435/1261 [05:42<11:07,  1.24it/s]
 35%|███████████████████████████▎                                                   | 436/1261 [05:43<11:04,  1.24it/s]
 35%|███████████████████████████▍                                                   | 437/1261 [05:44<11:00,  1.25it/s]
 35%|███████████████████████████▍                                                   | 438/1261 [05:45<10:55,  1.26it/s]
 35%|███████████████████████████▌                                                   | 439/1261 [05:46<10:56,  1.25it/s]
 35%|███████████████████████████▌                                                   | 440/1261 [05:46<10:52,  1.26it/s]
 35%|███████████████████████████▋                                                   | 441/1261 [05:47<10:49,  1.26it/s]
 35%|███████████████████████████▋                                                   | 442/1261 [05:48<10:50,  1.26it/s]
 35%|███████████████████████████▊                                                   | 443/1261 [05:49<10:47,  1.26it/s]
 35%|███████████████████████████▊                                                   | 444/1261 [05:50<10:46,  1.26it/s]
 35%|███████████████████████████▉                                                   | 445/1261 [05:50<10:43,  1.27it/s]
 35%|███████████████████████████▉                                                   | 446/1261 [05:51<10:45,  1.26it/s]
 35%|████████████████████████████                                                   | 447/1261 [05:52<10:45,  1.26it/s]
 36%|████████████████████████████                                                   | 448/1261 [05:53<10:46,  1.26it/s]
 36%|████████████████████████████▏                                                  | 449/1261 [05:54<10:42,  1.26it/s]
 36%|████████████████████████████▏                                                  | 450/1261 [05:54<10:43,  1.26it/s]
 36%|████████████████████████████▎                                                  | 451/1261 [05:55<10:40,  1.26it/s]
 36%|████████████████████████████▎                                                  | 452/1261 [05:56<10:39,  1.26it/s]
 36%|████████████████████████████▍                                                  | 453/1261 [05:57<10:40,  1.26it/s]
 36%|████████████████████████████▍                                                  | 454/1261 [05:57<10:41,  1.26it/s]
 36%|████████████████████████████▌                                                  | 455/1261 [05:58<10:39,  1.26it/s]
 36%|████████████████████████████▌                                                  | 456/1261 [05:59<10:35,  1.27it/s]
 36%|████████████████████████████▋                                                  | 457/1261 [06:00<10:36,  1.26it/s]
 36%|████████████████████████████▋                                                  | 458/1261 [06:01<10:31,  1.27it/s]
 36%|████████████████████████████▊                                                  | 459/1261 [06:01<10:30,  1.27it/s]
 36%|████████████████████████████▊                                                  | 460/1261 [06:02<10:31,  1.27it/s]
 37%|████████████████████████████▉                                                  | 461/1261 [06:03<10:29,  1.27it/s]
 37%|████████████████████████████▉                                                  | 462/1261 [06:04<10:30,  1.27it/s]
 37%|█████████████████████████████                                                  | 463/1261 [06:05<10:26,  1.27it/s]
 37%|█████████████████████████████                                                  | 464/1261 [06:05<10:27,  1.27it/s]
 37%|█████████████████████████████▏                                                 | 465/1261 [06:06<10:26,  1.27it/s]
 37%|█████████████████████████████▏                                                 | 466/1261 [06:07<10:24,  1.27it/s]
 37%|█████████████████████████████▎                                                 | 467/1261 [06:08<10:20,  1.28it/s]
 37%|█████████████████████████████▎                                                 | 468/1261 [06:08<10:21,  1.28it/s]
 37%|█████████████████████████████▍                                                 | 469/1261 [06:09<10:21,  1.27it/s]
 37%|█████████████████████████████▍                                                 | 470/1261 [06:10<10:20,  1.27it/s]
 37%|█████████████████████████████▌                                                 | 471/1261 [06:11<10:19,  1.28it/s]
 37%|█████████████████████████████▌                                                 | 472/1261 [06:12<10:20,  1.27it/s]
 38%|█████████████████████████████▋                                                 | 473/1261 [06:12<10:20,  1.27it/s]
 38%|█████████████████████████████▋                                                 | 474/1261 [06:13<10:20,  1.27it/s]
 38%|█████████████████████████████▊                                                 | 475/1261 [06:14<10:20,  1.27it/s]
 38%|█████████████████████████████▊                                                 | 476/1261 [06:15<10:26,  1.25it/s]
 38%|█████████████████████████████▉                                                 | 477/1261 [06:16<10:32,  1.24it/s]
 38%|█████████████████████████████▉                                                 | 478/1261 [06:16<10:33,  1.24it/s]
 38%|██████████████████████████████                                                 | 479/1261 [06:17<10:34,  1.23it/s]
 38%|██████████████████████████████                                                 | 480/1261 [06:18<10:34,  1.23it/s]
 38%|██████████████████████████████▏                                                | 481/1261 [06:19<10:39,  1.22it/s]
 38%|██████████████████████████████▏                                                | 482/1261 [06:20<10:54,  1.19it/s]
 38%|██████████████████████████████▎                                                | 483/1261 [06:21<10:55,  1.19it/s]
 38%|██████████████████████████████▎                                                | 484/1261 [06:22<10:55,  1.18it/s]
 38%|██████████████████████████████▍                                                | 485/1261 [06:22<10:47,  1.20it/s]
 39%|██████████████████████████████▍                                                | 486/1261 [06:23<10:41,  1.21it/s]
 39%|██████████████████████████████▌                                                | 487/1261 [06:24<10:38,  1.21it/s]
 39%|██████████████████████████████▌                                                | 488/1261 [06:25<10:39,  1.21it/s]
 39%|██████████████████████████████▋                                                | 489/1261 [06:26<10:31,  1.22it/s]
 39%|██████████████████████████████▋                                                | 490/1261 [06:26<10:31,  1.22it/s]
 39%|██████████████████████████████▊                                                | 491/1261 [06:27<10:23,  1.24it/s]
 39%|██████████████████████████████▊                                                | 492/1261 [06:28<10:20,  1.24it/s]
 39%|██████████████████████████████▉                                                | 493/1261 [06:29<10:22,  1.23it/s]
 39%|██████████████████████████████▉                                                | 494/1261 [06:30<10:22,  1.23it/s]
 39%|███████████████████████████████                                                | 495/1261 [06:30<10:17,  1.24it/s]
 39%|███████████████████████████████                                                | 496/1261 [06:31<10:16,  1.24it/s]
 39%|███████████████████████████████▏                                               | 497/1261 [06:32<10:19,  1.23it/s]
 39%|███████████████████████████████▏                                               | 498/1261 [06:33<10:25,  1.22it/s]
 40%|███████████████████████████████▎                                               | 499/1261 [06:34<10:26,  1.22it/s]
 40%|███████████████████████████████▎                                               | 500/1261 [06:35<10:26,  1.22it/s]
 40%|███████████████████████████████▍                                               | 501/1261 [06:35<10:21,  1.22it/s]
 40%|███████████████████████████████▍                                               | 502/1261 [06:36<10:17,  1.23it/s]
 40%|███████████████████████████████▌                                               | 503/1261 [06:37<10:13,  1.24it/s]
 40%|███████████████████████████████▌                                               | 504/1261 [06:38<10:06,  1.25it/s]
 40%|███████████████████████████████▋                                               | 505/1261 [06:39<10:01,  1.26it/s]
 40%|███████████████████████████████▋                                               | 506/1261 [06:39<09:59,  1.26it/s]
 40%|███████████████████████████████▊                                               | 507/1261 [06:40<10:01,  1.25it/s]
 40%|███████████████████████████████▊                                               | 508/1261 [06:41<10:03,  1.25it/s]
 40%|███████████████████████████████▉                                               | 509/1261 [06:42<10:02,  1.25it/s]
 40%|███████████████████████████████▉                                               | 510/1261 [06:43<10:04,  1.24it/s]
 41%|████████████████████████████████                                               | 511/1261 [06:43<10:05,  1.24it/s]
 41%|████████████████████████████████                                               | 512/1261 [06:44<10:01,  1.25it/s]
 41%|████████████████████████████████▏                                              | 513/1261 [06:45<09:58,  1.25it/s]
 41%|████████████████████████████████▏                                              | 514/1261 [06:46<09:58,  1.25it/s]
 41%|████████████████████████████████▎                                              | 515/1261 [06:47<09:59,  1.24it/s]
 41%|████████████████████████████████▎                                              | 516/1261 [06:47<09:58,  1.24it/s]
 41%|████████████████████████████████▍                                              | 517/1261 [06:48<09:54,  1.25it/s]
 41%|████████████████████████████████▍                                              | 518/1261 [06:49<09:52,  1.25it/s]
 41%|████████████████████████████████▌                                              | 519/1261 [06:50<09:50,  1.26it/s]
 41%|████████████████████████████████▌                                              | 520/1261 [06:51<09:48,  1.26it/s]
 41%|████████████████████████████████▋                                              | 521/1261 [06:51<09:44,  1.27it/s]
 41%|████████████████████████████████▋                                              | 522/1261 [06:52<09:42,  1.27it/s]
 41%|████████████████████████████████▊                                              | 523/1261 [06:53<09:42,  1.27it/s]
 42%|████████████████████████████████▊                                              | 524/1261 [06:54<09:41,  1.27it/s]
 42%|████████████████████████████████▉                                              | 525/1261 [06:54<09:39,  1.27it/s]
 42%|████████████████████████████████▉                                              | 526/1261 [06:55<09:41,  1.26it/s]
 42%|█████████████████████████████████                                              | 527/1261 [06:56<09:45,  1.25it/s]
 42%|█████████████████████████████████                                              | 528/1261 [06:57<09:41,  1.26it/s]
 42%|█████████████████████████████████▏                                             | 529/1261 [06:58<09:43,  1.26it/s]
 42%|█████████████████████████████████▏                                             | 530/1261 [06:58<09:45,  1.25it/s]
 42%|█████████████████████████████████▎                                             | 531/1261 [06:59<09:42,  1.25it/s]
 42%|█████████████████████████████████▎                                             | 532/1261 [07:00<09:38,  1.26it/s]
 42%|█████████████████████████████████▍                                             | 533/1261 [07:01<09:39,  1.26it/s]
 42%|█████████████████████████████████▍                                             | 534/1261 [07:02<09:37,  1.26it/s]
 42%|█████████████████████████████████▌                                             | 535/1261 [07:02<09:36,  1.26it/s]
 43%|█████████████████████████████████▌                                             | 536/1261 [07:03<09:33,  1.26it/s]
 43%|█████████████████████████████████▋                                             | 537/1261 [07:04<09:39,  1.25it/s]
 43%|█████████████████████████████████▋                                             | 538/1261 [07:05<09:46,  1.23it/s]
 43%|█████████████████████████████████▊                                             | 539/1261 [07:06<09:53,  1.22it/s]
 43%|█████████████████████████████████▊                                             | 540/1261 [07:07<09:51,  1.22it/s]
 43%|█████████████████████████████████▉                                             | 541/1261 [07:07<09:50,  1.22it/s]
 43%|█████████████████████████████████▉                                             | 542/1261 [07:08<09:45,  1.23it/s]
 43%|██████████████████████████████████                                             | 543/1261 [07:09<09:35,  1.25it/s]
 43%|██████████████████████████████████                                             | 544/1261 [07:10<09:32,  1.25it/s]
 43%|██████████████████████████████████▏                                            | 545/1261 [07:10<09:25,  1.27it/s]
 43%|██████████████████████████████████▏                                            | 546/1261 [07:11<09:24,  1.27it/s]
 43%|██████████████████████████████████▎                                            | 547/1261 [07:12<09:26,  1.26it/s]
 43%|██████████████████████████████████▎                                            | 548/1261 [07:13<09:27,  1.26it/s]
 44%|██████████████████████████████████▍                                            | 549/1261 [07:14<09:27,  1.26it/s]
 44%|██████████████████████████████████▍                                            | 550/1261 [07:14<09:27,  1.25it/s]
 44%|██████████████████████████████████▌                                            | 551/1261 [07:15<09:21,  1.26it/s]
 44%|██████████████████████████████████▌                                            | 552/1261 [07:16<09:21,  1.26it/s]
 44%|██████████████████████████████████▋                                            | 553/1261 [07:17<09:19,  1.27it/s]
 44%|██████████████████████████████████▋                                            | 554/1261 [07:18<09:19,  1.26it/s]
 44%|██████████████████████████████████▊                                            | 555/1261 [07:18<09:22,  1.26it/s]
 44%|██████████████████████████████████▊                                            | 556/1261 [07:19<09:24,  1.25it/s]
 44%|██████████████████████████████████▉                                            | 557/1261 [07:20<09:26,  1.24it/s]
 44%|██████████████████████████████████▉                                            | 558/1261 [07:21<09:30,  1.23it/s]
 44%|███████████████████████████████████                                            | 559/1261 [07:22<09:27,  1.24it/s]
 44%|███████████████████████████████████                                            | 560/1261 [07:23<09:36,  1.22it/s]
 44%|███████████████████████████████████▏                                           | 561/1261 [07:23<09:35,  1.22it/s]
 45%|███████████████████████████████████▏                                           | 562/1261 [07:24<09:30,  1.23it/s]
 45%|███████████████████████████████████▎                                           | 563/1261 [07:25<09:25,  1.24it/s]
 45%|███████████████████████████████████▎                                           | 564/1261 [07:26<09:27,  1.23it/s]
 45%|███████████████████████████████████▍                                           | 565/1261 [07:27<09:29,  1.22it/s]
 45%|███████████████████████████████████▍                                           | 566/1261 [07:27<09:32,  1.21it/s]
 45%|███████████████████████████████████▌                                           | 567/1261 [07:28<09:25,  1.23it/s]
 45%|███████████████████████████████████▌                                           | 568/1261 [07:29<09:25,  1.23it/s]
 45%|███████████████████████████████████▋                                           | 569/1261 [07:30<09:27,  1.22it/s]
 45%|███████████████████████████████████▋                                           | 570/1261 [07:31<09:23,  1.23it/s]
 45%|███████████████████████████████████▊                                           | 571/1261 [07:31<09:23,  1.23it/s]
 45%|███████████████████████████████████▊                                           | 572/1261 [07:32<09:17,  1.24it/s]
 45%|███████████████████████████████████▉                                           | 573/1261 [07:33<09:13,  1.24it/s]
 46%|███████████████████████████████████▉                                           | 574/1261 [07:34<09:09,  1.25it/s]
 46%|████████████████████████████████████                                           | 575/1261 [07:35<09:06,  1.25it/s]
 46%|████████████████████████████████████                                           | 576/1261 [07:35<09:04,  1.26it/s]
 46%|████████████████████████████████████▏                                          | 577/1261 [07:36<09:08,  1.25it/s]
 46%|████████████████████████████████████▏                                          | 578/1261 [07:37<09:06,  1.25it/s]
 46%|████████████████████████████████████▎                                          | 579/1261 [07:38<09:07,  1.25it/s]
 46%|████████████████████████████████████▎                                          | 580/1261 [07:39<09:05,  1.25it/s]
 46%|████████████████████████████████████▍                                          | 581/1261 [07:39<09:05,  1.25it/s]
 46%|████████████████████████████████████▍                                          | 582/1261 [07:40<09:08,  1.24it/s]
 46%|████████████████████████████████████▌                                          | 583/1261 [07:41<09:09,  1.23it/s]
 46%|████████████████████████████████████▌                                          | 584/1261 [07:42<09:05,  1.24it/s]
 46%|████████████████████████████████████▋                                          | 585/1261 [07:43<09:02,  1.25it/s]
 46%|████████████████████████████████████▋                                          | 586/1261 [07:44<09:03,  1.24it/s]
 47%|████████████████████████████████████▊                                          | 587/1261 [07:44<09:01,  1.24it/s]
 47%|████████████████████████████████████▊                                          | 588/1261 [07:45<08:57,  1.25it/s]
 47%|████████████████████████████████████▉                                          | 589/1261 [07:46<08:56,  1.25it/s]
 47%|████████████████████████████████████▉                                          | 590/1261 [07:47<08:54,  1.25it/s]
 47%|█████████████████████████████████████                                          | 591/1261 [07:48<08:58,  1.24it/s]
 47%|█████████████████████████████████████                                          | 592/1261 [07:48<09:00,  1.24it/s]
 47%|█████████████████████████████████████▏                                         | 593/1261 [07:49<08:59,  1.24it/s]
 47%|█████████████████████████████████████▏                                         | 594/1261 [07:50<08:59,  1.24it/s]
 47%|█████████████████████████████████████▎                                         | 595/1261 [07:51<08:58,  1.24it/s]
 47%|█████████████████████████████████████▎                                         | 596/1261 [07:52<08:56,  1.24it/s]
 47%|█████████████████████████████████████▍                                         | 597/1261 [07:52<08:57,  1.24it/s]
 47%|█████████████████████████████████████▍                                         | 598/1261 [07:53<08:56,  1.24it/s]
 48%|█████████████████████████████████████▌                                         | 599/1261 [07:54<08:56,  1.23it/s]
 48%|█████████████████████████████████████▌                                         | 600/1261 [07:55<08:54,  1.24it/s]
 48%|█████████████████████████████████████▋                                         | 601/1261 [07:56<08:52,  1.24it/s]
 48%|█████████████████████████████████████▋                                         | 602/1261 [07:56<08:48,  1.25it/s]
 48%|█████████████████████████████████████▊                                         | 603/1261 [07:57<08:47,  1.25it/s]
 48%|█████████████████████████████████████▊                                         | 604/1261 [07:58<08:47,  1.25it/s]
 48%|█████████████████████████████████████▉                                         | 605/1261 [07:59<08:45,  1.25it/s]
 48%|█████████████████████████████████████▉                                         | 606/1261 [08:00<08:43,  1.25it/s]
 48%|██████████████████████████████████████                                         | 607/1261 [08:00<08:41,  1.25it/s]
 48%|██████████████████████████████████████                                         | 608/1261 [08:01<08:43,  1.25it/s]
 48%|██████████████████████████████████████▏                                        | 609/1261 [08:02<08:35,  1.26it/s]
 48%|██████████████████████████████████████▏                                        | 610/1261 [08:03<08:36,  1.26it/s]
 48%|██████████████████████████████████████▎                                        | 611/1261 [08:04<08:35,  1.26it/s]
 49%|██████████████████████████████████████▎                                        | 612/1261 [08:04<08:33,  1.26it/s]
 49%|██████████████████████████████████████▍                                        | 613/1261 [08:05<08:35,  1.26it/s]
 49%|██████████████████████████████████████▍                                        | 614/1261 [08:06<08:32,  1.26it/s]
 49%|██████████████████████████████████████▌                                        | 615/1261 [08:07<08:36,  1.25it/s]
 49%|██████████████████████████████████████▌                                        | 616/1261 [08:08<08:34,  1.25it/s]
 49%|██████████████████████████████████████▋                                        | 617/1261 [08:08<08:44,  1.23it/s]
 49%|██████████████████████████████████████▋                                        | 618/1261 [08:09<08:52,  1.21it/s]
 49%|██████████████████████████████████████▊                                        | 619/1261 [08:10<08:59,  1.19it/s]
 49%|██████████████████████████████████████▊                                        | 620/1261 [08:11<09:03,  1.18it/s]
 49%|██████████████████████████████████████▉                                        | 621/1261 [08:12<09:08,  1.17it/s]
 49%|██████████████████████████████████████▉                                        | 622/1261 [08:13<09:12,  1.16it/s]
 49%|███████████████████████████████████████                                        | 623/1261 [08:14<09:13,  1.15it/s]
 49%|███████████████████████████████████████                                        | 624/1261 [08:14<09:07,  1.16it/s]
 50%|███████████████████████████████████████▏                                       | 625/1261 [08:15<08:59,  1.18it/s]
 50%|███████████████████████████████████████▏                                       | 626/1261 [08:16<08:58,  1.18it/s]
 50%|███████████████████████████████████████▎                                       | 627/1261 [08:17<09:06,  1.16it/s]
 50%|███████████████████████████████████████▎                                       | 628/1261 [08:18<09:10,  1.15it/s]
 50%|███████████████████████████████████████▍                                       | 629/1261 [08:19<09:00,  1.17it/s]
 50%|███████████████████████████████████████▍                                       | 630/1261 [08:20<08:52,  1.19it/s]
 50%|███████████████████████████████████████▌                                       | 631/1261 [08:20<08:44,  1.20it/s]
 50%|███████████████████████████████████████▌                                       | 632/1261 [08:21<08:35,  1.22it/s]
 50%|███████████████████████████████████████▋                                       | 633/1261 [08:22<08:32,  1.22it/s]
 50%|███████████████████████████████████████▋                                       | 634/1261 [08:23<08:35,  1.22it/s]
 50%|███████████████████████████████████████▊                                       | 635/1261 [08:24<08:32,  1.22it/s]
 50%|███████████████████████████████████████▊                                       | 636/1261 [08:24<08:37,  1.21it/s]
 51%|███████████████████████████████████████▉                                       | 637/1261 [08:25<08:38,  1.20it/s]
 51%|███████████████████████████████████████▉                                       | 638/1261 [08:26<08:36,  1.21it/s]
 51%|████████████████████████████████████████                                       | 639/1261 [08:27<08:38,  1.20it/s]
 51%|████████████████████████████████████████                                       | 640/1261 [08:28<08:35,  1.20it/s]
 51%|████████████████████████████████████████▏                                      | 641/1261 [08:29<08:29,  1.22it/s]
 51%|████████████████████████████████████████▏                                      | 642/1261 [08:29<08:23,  1.23it/s]
 51%|████████████████████████████████████████▎                                      | 643/1261 [08:30<08:22,  1.23it/s]
 51%|████████████████████████████████████████▎                                      | 644/1261 [08:31<08:18,  1.24it/s]
 51%|████████████████████████████████████████▍                                      | 645/1261 [08:32<08:15,  1.24it/s]
 51%|████████████████████████████████████████▍                                      | 646/1261 [08:33<08:13,  1.25it/s]
 51%|████████████████████████████████████████▌                                      | 647/1261 [08:33<08:19,  1.23it/s]
 51%|████████████████████████████████████████▌                                      | 648/1261 [08:34<08:24,  1.21it/s]
 51%|████████████████████████████████████████▋                                      | 649/1261 [08:35<08:25,  1.21it/s]
 52%|████████████████████████████████████████▋                                      | 650/1261 [08:36<08:20,  1.22it/s]
 52%|████████████████████████████████████████▊                                      | 651/1261 [08:37<08:17,  1.23it/s]
 52%|████████████████████████████████████████▊                                      | 652/1261 [08:38<08:12,  1.24it/s]
 52%|████████████████████████████████████████▉                                      | 653/1261 [08:38<08:11,  1.24it/s]
 52%|████████████████████████████████████████▉                                      | 654/1261 [08:39<08:09,  1.24it/s]
 52%|█████████████████████████████████████████                                      | 655/1261 [08:40<08:09,  1.24it/s]
 52%|█████████████████████████████████████████                                      | 656/1261 [08:41<08:08,  1.24it/s]
 52%|█████████████████████████████████████████▏                                     | 657/1261 [08:42<08:07,  1.24it/s]
 52%|█████████████████████████████████████████▏                                     | 658/1261 [08:42<08:03,  1.25it/s]
 52%|█████████████████████████████████████████▎                                     | 659/1261 [08:43<08:04,  1.24it/s]
 52%|█████████████████████████████████████████▎                                     | 660/1261 [08:44<08:02,  1.25it/s]
 52%|█████████████████████████████████████████▍                                     | 661/1261 [08:45<08:07,  1.23it/s]
 52%|█████████████████████████████████████████▍                                     | 662/1261 [08:46<08:09,  1.22it/s]
 53%|█████████████████████████████████████████▌                                     | 663/1261 [08:46<08:11,  1.22it/s]
 53%|█████████████████████████████████████████▌                                     | 664/1261 [08:47<08:08,  1.22it/s]
 53%|█████████████████████████████████████████▋                                     | 665/1261 [08:48<08:04,  1.23it/s]
 53%|█████████████████████████████████████████▋                                     | 666/1261 [08:49<08:09,  1.22it/s]
 53%|█████████████████████████████████████████▊                                     | 667/1261 [08:50<08:06,  1.22it/s]
 53%|█████████████████████████████████████████▊                                     | 668/1261 [08:51<08:05,  1.22it/s]
 53%|█████████████████████████████████████████▉                                     | 669/1261 [08:51<08:07,  1.21it/s]
 53%|█████████████████████████████████████████▉                                     | 670/1261 [08:52<08:06,  1.21it/s]
 53%|██████████████████████████████████████████                                     | 671/1261 [08:53<08:04,  1.22it/s]
 53%|██████████████████████████████████████████                                     | 672/1261 [08:54<08:00,  1.22it/s]
 53%|██████████████████████████████████████████▏                                    | 673/1261 [08:55<07:57,  1.23it/s]
 53%|██████████████████████████████████████████▏                                    | 674/1261 [08:55<07:56,  1.23it/s]
 54%|██████████████████████████████████████████▎                                    | 675/1261 [08:56<07:53,  1.24it/s]
 54%|██████████████████████████████████████████▎                                    | 676/1261 [08:57<07:55,  1.23it/s]
 54%|██████████████████████████████████████████▍                                    | 677/1261 [08:58<07:57,  1.22it/s]
 54%|██████████████████████████████████████████▍                                    | 678/1261 [08:59<07:55,  1.23it/s]
 54%|██████████████████████████████████████████▌                                    | 679/1261 [09:00<07:56,  1.22it/s]
 54%|██████████████████████████████████████████▌                                    | 680/1261 [09:00<08:01,  1.21it/s]
 54%|██████████████████████████████████████████▋                                    | 681/1261 [09:01<08:22,  1.15it/s]
 54%|██████████████████████████████████████████▋                                    | 682/1261 [09:02<08:21,  1.16it/s]
 54%|██████████████████████████████████████████▊                                    | 683/1261 [09:03<08:12,  1.17it/s]
 54%|██████████████████████████████████████████▊                                    | 684/1261 [09:04<08:10,  1.18it/s]
 54%|██████████████████████████████████████████▉                                    | 685/1261 [09:05<08:07,  1.18it/s]
 54%|██████████████████████████████████████████▉                                    | 686/1261 [09:06<08:07,  1.18it/s]
 54%|███████████████████████████████████████████                                    | 687/1261 [09:06<08:00,  1.20it/s]
 55%|███████████████████████████████████████████                                    | 688/1261 [09:07<07:53,  1.21it/s]
 55%|███████████████████████████████████████████▏                                   | 689/1261 [09:08<07:49,  1.22it/s]
 55%|███████████████████████████████████████████▏                                   | 690/1261 [09:09<07:44,  1.23it/s]
 55%|███████████████████████████████████████████▎                                   | 691/1261 [09:10<07:40,  1.24it/s]
 55%|███████████████████████████████████████████▎                                   | 692/1261 [09:10<07:37,  1.24it/s]
 55%|███████████████████████████████████████████▍                                   | 693/1261 [09:11<07:34,  1.25it/s]
 55%|███████████████████████████████████████████▍                                   | 694/1261 [09:12<07:34,  1.25it/s]
 55%|███████████████████████████████████████████▌                                   | 695/1261 [09:13<07:32,  1.25it/s]
 55%|███████████████████████████████████████████▌                                   | 696/1261 [09:14<07:29,  1.26it/s]
 55%|███████████████████████████████████████████▋                                   | 697/1261 [09:14<07:27,  1.26it/s]
 55%|███████████████████████████████████████████▋                                   | 698/1261 [09:15<07:25,  1.26it/s]
 55%|███████████████████████████████████████████▊                                   | 699/1261 [09:16<07:26,  1.26it/s]
 56%|███████████████████████████████████████████▊                                   | 700/1261 [09:17<07:25,  1.26it/s]
 56%|███████████████████████████████████████████▉                                   | 701/1261 [09:17<07:22,  1.27it/s]
 56%|███████████████████████████████████████████▉                                   | 702/1261 [09:18<07:21,  1.27it/s]
 56%|████████████████████████████████████████████                                   | 703/1261 [09:19<07:19,  1.27it/s]
 56%|████████████████████████████████████████████                                   | 704/1261 [09:20<07:19,  1.27it/s]
 56%|████████████████████████████████████████████▏                                  | 705/1261 [09:21<07:21,  1.26it/s]
 56%|████████████████████████████████████████████▏                                  | 706/1261 [09:21<07:21,  1.26it/s]
 56%|████████████████████████████████████████████▎                                  | 707/1261 [09:22<07:27,  1.24it/s]
 56%|████████████████████████████████████████████▎                                  | 708/1261 [09:23<07:25,  1.24it/s]
 56%|████████████████████████████████████████████▍                                  | 709/1261 [09:24<07:22,  1.25it/s]
 56%|████████████████████████████████████████████▍                                  | 710/1261 [09:25<07:22,  1.25it/s]
 56%|████████████████████████████████████████████▌                                  | 711/1261 [09:25<07:21,  1.25it/s]
 56%|████████████████████████████████████████████▌                                  | 712/1261 [09:26<07:18,  1.25it/s]
 57%|████████████████████████████████████████████▋                                  | 713/1261 [09:27<07:14,  1.26it/s]
 57%|████████████████████████████████████████████▋                                  | 714/1261 [09:28<07:15,  1.26it/s]
 57%|████████████████████████████████████████████▊                                  | 715/1261 [09:29<07:20,  1.24it/s]
 57%|████████████████████████████████████████████▊                                  | 716/1261 [09:29<07:17,  1.25it/s]
 57%|████████████████████████████████████████████▉                                  | 717/1261 [09:30<07:14,  1.25it/s]
 57%|████████████████████████████████████████████▉                                  | 718/1261 [09:31<07:12,  1.26it/s]
 57%|█████████████████████████████████████████████                                  | 719/1261 [09:32<07:08,  1.26it/s]
 57%|█████████████████████████████████████████████                                  | 720/1261 [09:33<07:06,  1.27it/s]
 57%|█████████████████████████████████████████████▏                                 | 721/1261 [09:33<07:06,  1.27it/s]
 57%|█████████████████████████████████████████████▏                                 | 722/1261 [09:34<07:02,  1.28it/s]
 57%|█████████████████████████████████████████████▎                                 | 723/1261 [09:35<07:05,  1.26it/s]
 57%|█████████████████████████████████████████████▎                                 | 724/1261 [09:36<07:06,  1.26it/s]
 57%|█████████████████████████████████████████████▍                                 | 725/1261 [09:37<07:09,  1.25it/s]
 58%|█████████████████████████████████████████████▍                                 | 726/1261 [09:37<07:07,  1.25it/s]
 58%|█████████████████████████████████████████████▌                                 | 727/1261 [09:38<07:05,  1.25it/s]
 58%|█████████████████████████████████████████████▌                                 | 728/1261 [09:39<07:05,  1.25it/s]
 58%|█████████████████████████████████████████████▋                                 | 729/1261 [09:40<07:06,  1.25it/s]
 58%|█████████████████████████████████████████████▋                                 | 730/1261 [09:41<07:05,  1.25it/s]
 58%|█████████████████████████████████████████████▊                                 | 731/1261 [09:41<07:02,  1.26it/s]
 58%|█████████████████████████████████████████████▊                                 | 732/1261 [09:42<06:58,  1.26it/s]
 58%|█████████████████████████████████████████████▉                                 | 733/1261 [09:43<06:57,  1.27it/s]
 58%|█████████████████████████████████████████████▉                                 | 734/1261 [09:44<06:54,  1.27it/s]
 58%|██████████████████████████████████████████████                                 | 735/1261 [09:45<06:53,  1.27it/s]
 58%|██████████████████████████████████████████████                                 | 736/1261 [09:45<06:51,  1.28it/s]
 58%|██████████████████████████████████████████████▏                                | 737/1261 [09:46<06:53,  1.27it/s]
 59%|██████████████████████████████████████████████▏                                | 738/1261 [09:47<06:53,  1.27it/s]
 59%|██████████████████████████████████████████████▎                                | 739/1261 [09:48<06:54,  1.26it/s]
 59%|██████████████████████████████████████████████▎                                | 740/1261 [09:49<06:57,  1.25it/s]
 59%|██████████████████████████████████████████████▍                                | 741/1261 [09:49<07:03,  1.23it/s]
 59%|██████████████████████████████████████████████▍                                | 742/1261 [09:50<07:05,  1.22it/s]
 59%|██████████████████████████████████████████████▌                                | 743/1261 [09:51<07:17,  1.18it/s]
 59%|██████████████████████████████████████████████▌                                | 744/1261 [09:52<07:17,  1.18it/s]
 59%|██████████████████████████████████████████████▋                                | 745/1261 [09:53<07:29,  1.15it/s]
 59%|██████████████████████████████████████████████▋                                | 746/1261 [09:54<07:29,  1.15it/s]
 59%|██████████████████████████████████████████████▊                                | 747/1261 [09:55<07:25,  1.15it/s]
 59%|██████████████████████████████████████████████▊                                | 748/1261 [09:55<07:21,  1.16it/s]
 59%|██████████████████████████████████████████████▉                                | 749/1261 [09:56<07:19,  1.17it/s]
 59%|██████████████████████████████████████████████▉                                | 750/1261 [09:57<07:21,  1.16it/s]
 60%|███████████████████████████████████████████████                                | 751/1261 [09:58<07:23,  1.15it/s]
 60%|███████████████████████████████████████████████                                | 752/1261 [09:59<07:21,  1.15it/s]
 60%|███████████████████████████████████████████████▏                               | 753/1261 [10:00<07:14,  1.17it/s]
 60%|███████████████████████████████████████████████▏                               | 754/1261 [10:01<07:12,  1.17it/s]
 60%|███████████████████████████████████████████████▎                               | 755/1261 [10:01<07:15,  1.16it/s]
 60%|███████████████████████████████████████████████▎                               | 756/1261 [10:02<07:15,  1.16it/s]
 60%|███████████████████████████████████████████████▍                               | 757/1261 [10:03<07:17,  1.15it/s]
 60%|███████████████████████████████████████████████▍                               | 758/1261 [10:04<07:08,  1.17it/s]
 60%|███████████████████████████████████████████████▌                               | 759/1261 [10:05<07:06,  1.18it/s]
 60%|███████████████████████████████████████████████▌                               | 760/1261 [10:06<07:02,  1.19it/s]
 60%|███████████████████████████████████████████████▋                               | 761/1261 [10:06<06:54,  1.21it/s]
 60%|███████████████████████████████████████████████▋                               | 762/1261 [10:07<06:49,  1.22it/s]
 61%|███████████████████████████████████████████████▊                               | 763/1261 [10:08<06:46,  1.23it/s]
 61%|███████████████████████████████████████████████▊                               | 764/1261 [10:09<06:42,  1.23it/s]
 61%|███████████████████████████████████████████████▉                               | 765/1261 [10:10<06:37,  1.25it/s]
 61%|███████████████████████████████████████████████▉                               | 766/1261 [10:10<06:34,  1.25it/s]
 61%|████████████████████████████████████████████████                               | 767/1261 [10:11<06:35,  1.25it/s]
 61%|████████████████████████████████████████████████                               | 768/1261 [10:12<06:33,  1.25it/s]
 61%|████████████████████████████████████████████████▏                              | 769/1261 [10:13<06:32,  1.25it/s]
 61%|████████████████████████████████████████████████▏                              | 770/1261 [10:14<06:29,  1.26it/s]
 61%|████████████████████████████████████████████████▎                              | 771/1261 [10:14<06:29,  1.26it/s]
 61%|████████████████████████████████████████████████▎                              | 772/1261 [10:15<06:29,  1.25it/s]
 61%|████████████████████████████████████████████████▍                              | 773/1261 [10:16<06:29,  1.25it/s]
 61%|████████████████████████████████████████████████▍                              | 774/1261 [10:17<06:29,  1.25it/s]
 61%|████████████████████████████████████████████████▌                              | 775/1261 [10:18<06:27,  1.25it/s]
 62%|████████████████████████████████████████████████▌                              | 776/1261 [10:18<06:26,  1.25it/s]
 62%|████████████████████████████████████████████████▋                              | 777/1261 [10:19<06:24,  1.26it/s]
 62%|████████████████████████████████████████████████▋                              | 778/1261 [10:20<06:23,  1.26it/s]
 62%|████████████████████████████████████████████████▊                              | 779/1261 [10:21<06:24,  1.25it/s]
 62%|████████████████████████████████████████████████▊                              | 780/1261 [10:22<06:30,  1.23it/s]
 62%|████████████████████████████████████████████████▉                              | 781/1261 [10:23<06:37,  1.21it/s]
 62%|████████████████████████████████████████████████▉                              | 782/1261 [10:23<06:37,  1.20it/s]
 62%|█████████████████████████████████████████████████                              | 783/1261 [10:24<06:34,  1.21it/s]
 62%|█████████████████████████████████████████████████                              | 784/1261 [10:25<06:30,  1.22it/s]
 62%|█████████████████████████████████████████████████▏                             | 785/1261 [10:26<06:31,  1.22it/s]
 62%|█████████████████████████████████████████████████▏                             | 786/1261 [10:27<06:33,  1.21it/s]
 62%|█████████████████████████████████████████████████▎                             | 787/1261 [10:28<06:38,  1.19it/s]
 62%|█████████████████████████████████████████████████▎                             | 788/1261 [10:28<06:29,  1.21it/s]
 63%|█████████████████████████████████████████████████▍                             | 789/1261 [10:29<06:31,  1.21it/s]
 63%|█████████████████████████████████████████████████▍                             | 790/1261 [10:30<06:31,  1.20it/s]
 63%|█████████████████████████████████████████████████▌                             | 791/1261 [10:31<06:30,  1.20it/s]
 63%|█████████████████████████████████████████████████▌                             | 792/1261 [10:32<06:34,  1.19it/s]
 63%|█████████████████████████████████████████████████▋                             | 793/1261 [10:33<06:34,  1.19it/s]
 63%|█████████████████████████████████████████████████▋                             | 794/1261 [10:33<06:36,  1.18it/s]
 63%|█████████████████████████████████████████████████▊                             | 795/1261 [10:34<06:38,  1.17it/s]
 63%|█████████████████████████████████████████████████▊                             | 796/1261 [10:35<06:36,  1.17it/s]
 63%|█████████████████████████████████████████████████▉                             | 797/1261 [10:36<06:32,  1.18it/s]
 63%|█████████████████████████████████████████████████▉                             | 798/1261 [10:37<06:29,  1.19it/s]
 63%|██████████████████████████████████████████████████                             | 799/1261 [10:38<06:27,  1.19it/s]
 63%|██████████████████████████████████████████████████                             | 800/1261 [10:38<06:23,  1.20it/s]
 64%|██████████████████████████████████████████████████▏                            | 801/1261 [10:39<06:21,  1.21it/s]
 64%|██████████████████████████████████████████████████▏                            | 802/1261 [10:40<06:17,  1.22it/s]
 64%|██████████████████████████████████████████████████▎                            | 803/1261 [10:41<06:16,  1.22it/s]
 64%|██████████████████████████████████████████████████▎                            | 804/1261 [10:42<06:12,  1.23it/s]
 64%|██████████████████████████████████████████████████▍                            | 805/1261 [10:42<06:08,  1.24it/s]
 64%|██████████████████████████████████████████████████▍                            | 806/1261 [10:43<06:11,  1.23it/s]
 64%|██████████████████████████████████████████████████▌                            | 807/1261 [10:44<06:07,  1.24it/s]
 64%|██████████████████████████████████████████████████▌                            | 808/1261 [10:45<06:05,  1.24it/s]
 64%|██████████████████████████████████████████████████▋                            | 809/1261 [10:46<06:04,  1.24it/s]
 64%|██████████████████████████████████████████████████▋                            | 810/1261 [10:46<06:01,  1.25it/s]
 64%|██████████████████████████████████████████████████▊                            | 811/1261 [10:47<06:00,  1.25it/s]
 64%|██████████████████████████████████████████████████▊                            | 812/1261 [10:48<05:59,  1.25it/s]
 64%|██████████████████████████████████████████████████▉                            | 813/1261 [10:49<05:59,  1.25it/s]
 65%|██████████████████████████████████████████████████▉                            | 814/1261 [10:50<05:58,  1.25it/s]
 65%|███████████████████████████████████████████████████                            | 815/1261 [10:50<05:56,  1.25it/s]
 65%|███████████████████████████████████████████████████                            | 816/1261 [10:51<05:55,  1.25it/s]
 65%|███████████████████████████████████████████████████▏                           | 817/1261 [10:52<05:55,  1.25it/s]
 65%|███████████████████████████████████████████████████▏                           | 818/1261 [10:53<05:54,  1.25it/s]
 65%|███████████████████████████████████████████████████▎                           | 819/1261 [10:54<05:53,  1.25it/s]
 65%|███████████████████████████████████████████████████▎                           | 820/1261 [10:54<05:52,  1.25it/s]
 65%|███████████████████████████████████████████████████▍                           | 821/1261 [10:55<05:51,  1.25it/s]
 65%|███████████████████████████████████████████████████▍                           | 822/1261 [10:56<05:51,  1.25it/s]
 65%|███████████████████████████████████████████████████▌                           | 823/1261 [10:57<05:53,  1.24it/s]
 65%|███████████████████████████████████████████████████▌                           | 824/1261 [10:58<05:50,  1.25it/s]
 65%|███████████████████████████████████████████████████▋                           | 825/1261 [10:58<05:48,  1.25it/s]
 66%|███████████████████████████████████████████████████▋                           | 826/1261 [10:59<05:46,  1.26it/s]
 66%|███████████████████████████████████████████████████▊                           | 827/1261 [11:00<05:47,  1.25it/s]
 66%|███████████████████████████████████████████████████▊                           | 828/1261 [11:01<05:46,  1.25it/s]
 66%|███████████████████████████████████████████████████▉                           | 829/1261 [11:02<05:45,  1.25it/s]
 66%|███████████████████████████████████████████████████▉                           | 830/1261 [11:02<05:44,  1.25it/s]
 66%|████████████████████████████████████████████████████                           | 831/1261 [11:03<05:50,  1.23it/s]
 66%|████████████████████████████████████████████████████                           | 832/1261 [11:04<05:53,  1.21it/s]
 66%|████████████████████████████████████████████████████▏                          | 833/1261 [11:05<05:56,  1.20it/s]
 66%|████████████████████████████████████████████████████▏                          | 834/1261 [11:06<05:50,  1.22it/s]
 66%|████████████████████████████████████████████████████▎                          | 835/1261 [11:07<05:47,  1.23it/s]
 66%|████████████████████████████████████████████████████▎                          | 836/1261 [11:07<05:45,  1.23it/s]
 66%|████████████████████████████████████████████████████▍                          | 837/1261 [11:08<05:43,  1.23it/s]
 66%|████████████████████████████████████████████████████▍                          | 838/1261 [11:09<05:41,  1.24it/s]
 67%|████████████████████████████████████████████████████▌                          | 839/1261 [11:10<05:43,  1.23it/s]
 67%|████████████████████████████████████████████████████▌                          | 840/1261 [11:11<05:41,  1.23it/s]
 67%|████████████████████████████████████████████████████▋                          | 841/1261 [11:12<05:43,  1.22it/s]
 67%|████████████████████████████████████████████████████▊                          | 842/1261 [11:12<05:39,  1.24it/s]
 67%|████████████████████████████████████████████████████▊                          | 843/1261 [11:13<05:36,  1.24it/s]
 67%|████████████████████████████████████████████████████▉                          | 844/1261 [11:14<05:33,  1.25it/s]
 67%|████████████████████████████████████████████████████▉                          | 845/1261 [11:15<05:31,  1.25it/s]
 67%|█████████████████████████████████████████████████████                          | 846/1261 [11:15<05:29,  1.26it/s]
 67%|█████████████████████████████████████████████████████                          | 847/1261 [11:16<05:27,  1.26it/s]
 67%|█████████████████████████████████████████████████████▏                         | 848/1261 [11:17<05:28,  1.26it/s]
 67%|█████████████████████████████████████████████████████▏                         | 849/1261 [11:18<05:29,  1.25it/s]
 67%|█████████████████████████████████████████████████████▎                         | 850/1261 [11:19<05:28,  1.25it/s]
 67%|█████████████████████████████████████████████████████▎                         | 851/1261 [11:19<05:28,  1.25it/s]
 68%|█████████████████████████████████████████████████████▍                         | 852/1261 [11:20<05:26,  1.25it/s]
 68%|█████████████████████████████████████████████████████▍                         | 853/1261 [11:21<05:28,  1.24it/s]
 68%|█████████████████████████████████████████████████████▌                         | 854/1261 [11:22<05:27,  1.24it/s]
 68%|█████████████████████████████████████████████████████▌                         | 855/1261 [11:23<05:27,  1.24it/s]
 68%|█████████████████████████████████████████████████████▋                         | 856/1261 [11:23<05:25,  1.24it/s]
 68%|█████████████████████████████████████████████████████▋                         | 857/1261 [11:24<05:24,  1.25it/s]
 68%|█████████████████████████████████████████████████████▊                         | 858/1261 [11:25<05:22,  1.25it/s]
 68%|█████████████████████████████████████████████████████▊                         | 859/1261 [11:26<05:21,  1.25it/s]
 68%|█████████████████████████████████████████████████████▉                         | 860/1261 [11:27<05:20,  1.25it/s]
 68%|█████████████████████████████████████████████████████▉                         | 861/1261 [11:27<05:18,  1.25it/s]
 68%|██████████████████████████████████████████████████████                         | 862/1261 [11:28<05:17,  1.26it/s]
 68%|██████████████████████████████████████████████████████                         | 863/1261 [11:29<05:17,  1.25it/s]
 69%|██████████████████████████████████████████████████████▏                        | 864/1261 [11:30<05:15,  1.26it/s]
 69%|██████████████████████████████████████████████████████▏                        | 865/1261 [11:31<05:13,  1.26it/s]
 69%|██████████████████████████████████████████████████████▎                        | 866/1261 [11:31<05:13,  1.26it/s]
 69%|██████████████████████████████████████████████████████▎                        | 867/1261 [11:32<05:12,  1.26it/s]
 69%|██████████████████████████████████████████████████████▍                        | 868/1261 [11:33<05:11,  1.26it/s]
 69%|██████████████████████████████████████████████████████▍                        | 869/1261 [11:34<05:11,  1.26it/s]
 69%|██████████████████████████████████████████████████████▌                        | 870/1261 [11:35<05:07,  1.27it/s]
 69%|██████████████████████████████████████████████████████▌                        | 871/1261 [11:35<05:06,  1.27it/s]
 69%|██████████████████████████████████████████████████████▋                        | 872/1261 [11:36<05:07,  1.27it/s]
 69%|██████████████████████████████████████████████████████▋                        | 873/1261 [11:37<05:08,  1.26it/s]
 69%|██████████████████████████████████████████████████████▊                        | 874/1261 [11:38<05:07,  1.26it/s]
 69%|██████████████████████████████████████████████████████▊                        | 875/1261 [11:39<05:06,  1.26it/s]
 69%|██████████████████████████████████████████████████████▉                        | 876/1261 [11:39<05:07,  1.25it/s]
 70%|██████████████████████████████████████████████████████▉                        | 877/1261 [11:40<05:06,  1.25it/s]
 70%|███████████████████████████████████████████████████████                        | 878/1261 [11:41<05:06,  1.25it/s]
 70%|███████████████████████████████████████████████████████                        | 879/1261 [11:42<05:06,  1.25it/s]
 70%|███████████████████████████████████████████████████████▏                       | 880/1261 [11:43<05:05,  1.25it/s]
 70%|███████████████████████████████████████████████████████▏                       | 881/1261 [11:43<05:04,  1.25it/s]
 70%|███████████████████████████████████████████████████████▎                       | 882/1261 [11:44<05:03,  1.25it/s]
 70%|███████████████████████████████████████████████████████▎                       | 883/1261 [11:45<05:06,  1.23it/s]
 70%|███████████████████████████████████████████████████████▍                       | 884/1261 [11:46<05:08,  1.22it/s]
 70%|███████████████████████████████████████████████████████▍                       | 885/1261 [11:47<05:11,  1.21it/s]
 70%|███████████████████████████████████████████████████████▌                       | 886/1261 [11:48<05:12,  1.20it/s]
 70%|███████████████████████████████████████████████████████▌                       | 887/1261 [11:48<05:17,  1.18it/s]
 70%|███████████████████████████████████████████████████████▋                       | 888/1261 [11:49<05:15,  1.18it/s]
 70%|███████████████████████████████████████████████████████▋                       | 889/1261 [11:50<05:12,  1.19it/s]
 71%|███████████████████████████████████████████████████████▊                       | 890/1261 [11:51<05:10,  1.19it/s]
 71%|███████████████████████████████████████████████████████▊                       | 891/1261 [11:52<05:08,  1.20it/s]
 71%|███████████████████████████████████████████████████████▉                       | 892/1261 [11:53<05:09,  1.19it/s]
 71%|███████████████████████████████████████████████████████▉                       | 893/1261 [11:53<05:06,  1.20it/s]
 71%|████████████████████████████████████████████████████████                       | 894/1261 [11:54<05:03,  1.21it/s]
 71%|████████████████████████████████████████████████████████                       | 895/1261 [11:55<05:02,  1.21it/s]
 71%|████████████████████████████████████████████████████████▏                      | 896/1261 [11:56<05:01,  1.21it/s]
 71%|████████████████████████████████████████████████████████▏                      | 897/1261 [11:57<05:01,  1.21it/s]
 71%|████████████████████████████████████████████████████████▎                      | 898/1261 [11:58<04:56,  1.22it/s]
 71%|████████████████████████████████████████████████████████▎                      | 899/1261 [11:58<04:57,  1.22it/s]
 71%|████████████████████████████████████████████████████████▍                      | 900/1261 [11:59<04:53,  1.23it/s]
 71%|████████████████████████████████████████████████████████▍                      | 901/1261 [12:00<04:49,  1.24it/s]
 72%|████████████████████████████████████████████████████████▌                      | 902/1261 [12:01<04:49,  1.24it/s]
 72%|████████████████████████████████████████████████████████▌                      | 903/1261 [12:02<04:48,  1.24it/s]
 72%|████████████████████████████████████████████████████████▋                      | 904/1261 [12:02<04:50,  1.23it/s]
 72%|████████████████████████████████████████████████████████▋                      | 905/1261 [12:03<04:50,  1.23it/s]
 72%|████████████████████████████████████████████████████████▊                      | 906/1261 [12:04<04:50,  1.22it/s]
 72%|████████████████████████████████████████████████████████▊                      | 907/1261 [12:05<04:48,  1.23it/s]
 72%|████████████████████████████████████████████████████████▉                      | 908/1261 [12:06<04:49,  1.22it/s]
 72%|████████████████████████████████████████████████████████▉                      | 909/1261 [12:06<04:48,  1.22it/s]
 72%|█████████████████████████████████████████████████████████                      | 910/1261 [12:07<04:50,  1.21it/s]
 72%|█████████████████████████████████████████████████████████                      | 911/1261 [12:08<04:49,  1.21it/s]
 72%|█████████████████████████████████████████████████████████▏                     | 912/1261 [12:09<04:49,  1.21it/s]
 72%|█████████████████████████████████████████████████████████▏                     | 913/1261 [12:10<04:47,  1.21it/s]
 72%|█████████████████████████████████████████████████████████▎                     | 914/1261 [12:11<04:45,  1.21it/s]
 73%|█████████████████████████████████████████████████████████▎                     | 915/1261 [12:11<04:43,  1.22it/s]
 73%|█████████████████████████████████████████████████████████▍                     | 916/1261 [12:12<04:40,  1.23it/s]
 73%|█████████████████████████████████████████████████████████▍                     | 917/1261 [12:13<04:38,  1.23it/s]
 73%|█████████████████████████████████████████████████████████▌                     | 918/1261 [12:14<04:38,  1.23it/s]
 73%|█████████████████████████████████████████████████████████▌                     | 919/1261 [12:15<04:35,  1.24it/s]
 73%|█████████████████████████████████████████████████████████▋                     | 920/1261 [12:15<04:35,  1.24it/s]
 73%|█████████████████████████████████████████████████████████▋                     | 921/1261 [12:16<04:35,  1.23it/s]
 73%|█████████████████████████████████████████████████████████▊                     | 922/1261 [12:17<04:32,  1.24it/s]
 73%|█████████████████████████████████████████████████████████▊                     | 923/1261 [12:18<04:32,  1.24it/s]
 73%|█████████████████████████████████████████████████████████▉                     | 924/1261 [12:19<04:31,  1.24it/s]
 73%|█████████████████████████████████████████████████████████▉                     | 925/1261 [12:19<04:30,  1.24it/s]
 73%|██████████████████████████████████████████████████████████                     | 926/1261 [12:20<04:29,  1.24it/s]
 74%|██████████████████████████████████████████████████████████                     | 927/1261 [12:21<04:28,  1.24it/s]
 74%|██████████████████████████████████████████████████████████▏                    | 928/1261 [12:22<04:26,  1.25it/s]
 74%|██████████████████████████████████████████████████████████▏                    | 929/1261 [12:23<04:30,  1.23it/s]
 74%|██████████████████████████████████████████████████████████▎                    | 930/1261 [12:24<04:26,  1.24it/s]
 74%|██████████████████████████████████████████████████████████▎                    | 931/1261 [12:24<04:23,  1.25it/s]
 74%|██████████████████████████████████████████████████████████▍                    | 932/1261 [12:25<04:22,  1.25it/s]
 74%|██████████████████████████████████████████████████████████▍                    | 933/1261 [12:26<04:22,  1.25it/s]
 74%|██████████████████████████████████████████████████████████▌                    | 934/1261 [12:27<04:20,  1.25it/s]
 74%|██████████████████████████████████████████████████████████▌                    | 935/1261 [12:27<04:20,  1.25it/s]
 74%|██████████████████████████████████████████████████████████▋                    | 936/1261 [12:28<04:18,  1.26it/s]
 74%|██████████████████████████████████████████████████████████▋                    | 937/1261 [12:29<04:17,  1.26it/s]
 74%|██████████████████████████████████████████████████████████▊                    | 938/1261 [12:30<04:16,  1.26it/s]
 74%|██████████████████████████████████████████████████████████▊                    | 939/1261 [12:31<04:15,  1.26it/s]
 75%|██████████████████████████████████████████████████████████▉                    | 940/1261 [12:31<04:15,  1.26it/s]
 75%|██████████████████████████████████████████████████████████▉                    | 941/1261 [12:32<04:14,  1.26it/s]
 75%|███████████████████████████████████████████████████████████                    | 942/1261 [12:33<04:15,  1.25it/s]
 75%|███████████████████████████████████████████████████████████                    | 943/1261 [12:34<04:13,  1.25it/s]
 75%|███████████████████████████████████████████████████████████▏                   | 944/1261 [12:35<04:13,  1.25it/s]
 75%|███████████████████████████████████████████████████████████▏                   | 945/1261 [12:35<04:12,  1.25it/s]
 75%|███████████████████████████████████████████████████████████▎                   | 946/1261 [12:36<04:10,  1.26it/s]
 75%|███████████████████████████████████████████████████████████▎                   | 947/1261 [12:37<04:10,  1.26it/s]
 75%|███████████████████████████████████████████████████████████▍                   | 948/1261 [12:38<04:09,  1.25it/s]
 75%|███████████████████████████████████████████████████████████▍                   | 949/1261 [12:39<04:10,  1.25it/s]
 75%|███████████████████████████████████████████████████████████▌                   | 950/1261 [12:39<04:07,  1.26it/s]
 75%|███████████████████████████████████████████████████████████▌                   | 951/1261 [12:40<04:07,  1.25it/s]
 75%|███████████████████████████████████████████████████████████▋                   | 952/1261 [12:41<04:06,  1.25it/s]
 76%|███████████████████████████████████████████████████████████▋                   | 953/1261 [12:42<04:05,  1.25it/s]
 76%|███████████████████████████████████████████████████████████▊                   | 954/1261 [12:43<04:04,  1.26it/s]
 76%|███████████████████████████████████████████████████████████▊                   | 955/1261 [12:43<04:03,  1.26it/s]
 76%|███████████████████████████████████████████████████████████▉                   | 956/1261 [12:44<04:03,  1.25it/s]
 76%|███████████████████████████████████████████████████████████▉                   | 957/1261 [12:45<04:02,  1.26it/s]
 76%|████████████████████████████████████████████████████████████                   | 958/1261 [12:46<04:01,  1.25it/s]
 76%|████████████████████████████████████████████████████████████                   | 959/1261 [12:47<04:01,  1.25it/s]
 76%|████████████████████████████████████████████████████████████▏                  | 960/1261 [12:47<04:00,  1.25it/s]
 76%|████████████████████████████████████████████████████████████▏                  | 961/1261 [12:48<03:58,  1.26it/s]
 76%|████████████████████████████████████████████████████████████▎                  | 962/1261 [12:49<03:58,  1.25it/s]
 76%|████████████████████████████████████████████████████████████▎                  | 963/1261 [12:50<03:56,  1.26it/s]
 76%|████████████████████████████████████████████████████████████▍                  | 964/1261 [12:51<03:56,  1.26it/s]
 77%|████████████████████████████████████████████████████████████▍                  | 965/1261 [12:51<03:54,  1.26it/s]
 77%|████████████████████████████████████████████████████████████▌                  | 966/1261 [12:52<03:53,  1.26it/s]
 77%|████████████████████████████████████████████████████████████▌                  | 967/1261 [12:53<03:53,  1.26it/s]
 77%|████████████████████████████████████████████████████████████▋                  | 968/1261 [12:54<03:53,  1.25it/s]
 77%|████████████████████████████████████████████████████████████▋                  | 969/1261 [12:55<03:52,  1.25it/s]
 77%|████████████████████████████████████████████████████████████▊                  | 970/1261 [12:55<03:51,  1.26it/s]
 77%|████████████████████████████████████████████████████████████▊                  | 971/1261 [12:56<03:50,  1.26it/s]
 77%|████████████████████████████████████████████████████████████▉                  | 972/1261 [12:57<03:50,  1.25it/s]
 77%|████████████████████████████████████████████████████████████▉                  | 973/1261 [12:58<03:48,  1.26it/s]
 77%|█████████████████████████████████████████████████████████████                  | 974/1261 [12:59<03:47,  1.26it/s]
 77%|█████████████████████████████████████████████████████████████                  | 975/1261 [12:59<03:46,  1.26it/s]
 77%|█████████████████████████████████████████████████████████████▏                 | 976/1261 [13:00<03:45,  1.27it/s]
 77%|█████████████████████████████████████████████████████████████▏                 | 977/1261 [13:01<03:45,  1.26it/s]
 78%|█████████████████████████████████████████████████████████████▎                 | 978/1261 [13:02<03:44,  1.26it/s]
 78%|█████████████████████████████████████████████████████████████▎                 | 979/1261 [13:03<03:43,  1.26it/s]
 78%|█████████████████████████████████████████████████████████████▍                 | 980/1261 [13:03<03:46,  1.24it/s]
 78%|█████████████████████████████████████████████████████████████▍                 | 981/1261 [13:04<03:48,  1.22it/s]
 78%|█████████████████████████████████████████████████████████████▌                 | 982/1261 [13:05<03:49,  1.21it/s]
 78%|█████████████████████████████████████████████████████████████▌                 | 983/1261 [13:06<03:47,  1.22it/s]
 78%|█████████████████████████████████████████████████████████████▋                 | 984/1261 [13:07<03:44,  1.23it/s]
 78%|█████████████████████████████████████████████████████████████▋                 | 985/1261 [13:07<03:43,  1.24it/s]
 78%|█████████████████████████████████████████████████████████████▊                 | 986/1261 [13:08<03:41,  1.24it/s]
 78%|█████████████████████████████████████████████████████████████▊                 | 987/1261 [13:09<03:41,  1.24it/s]
 78%|█████████████████████████████████████████████████████████████▉                 | 988/1261 [13:10<03:39,  1.24it/s]
 78%|█████████████████████████████████████████████████████████████▉                 | 989/1261 [13:11<03:40,  1.24it/s]
 79%|██████████████████████████████████████████████████████████████                 | 990/1261 [13:11<03:41,  1.23it/s]
 79%|██████████████████████████████████████████████████████████████                 | 991/1261 [13:12<03:39,  1.23it/s]
 79%|██████████████████████████████████████████████████████████████▏                | 992/1261 [13:13<03:37,  1.23it/s]
 79%|██████████████████████████████████████████████████████████████▏                | 993/1261 [13:14<03:36,  1.24it/s]
 79%|██████████████████████████████████████████████████████████████▎                | 994/1261 [13:15<03:36,  1.23it/s]
 79%|██████████████████████████████████████████████████████████████▎                | 995/1261 [13:16<03:35,  1.24it/s]
 79%|██████████████████████████████████████████████████████████████▍                | 996/1261 [13:16<03:34,  1.24it/s]
 79%|██████████████████████████████████████████████████████████████▍                | 997/1261 [13:17<03:34,  1.23it/s]
 79%|██████████████████████████████████████████████████████████████▌                | 998/1261 [13:18<03:33,  1.23it/s]
 79%|██████████████████████████████████████████████████████████████▌                | 999/1261 [13:19<03:32,  1.23it/s]
 79%|█████████████████████████████████████████████████████████████▊                | 1000/1261 [13:20<03:30,  1.24it/s]
 79%|█████████████████████████████████████████████████████████████▉                | 1001/1261 [13:20<03:28,  1.25it/s]
 79%|█████████████████████████████████████████████████████████████▉                | 1002/1261 [13:21<03:28,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████                | 1003/1261 [13:22<03:28,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████                | 1004/1261 [13:23<03:29,  1.23it/s]
 80%|██████████████████████████████████████████████████████████████▏               | 1005/1261 [13:24<03:27,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▏               | 1006/1261 [13:24<03:26,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▎               | 1007/1261 [13:25<03:26,  1.23it/s]
 80%|██████████████████████████████████████████████████████████████▎               | 1008/1261 [13:26<03:25,  1.23it/s]
 80%|██████████████████████████████████████████████████████████████▍               | 1009/1261 [13:27<03:23,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▍               | 1010/1261 [13:28<03:22,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▌               | 1011/1261 [13:28<03:21,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▌               | 1012/1261 [13:29<03:20,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▋               | 1013/1261 [13:30<03:19,  1.25it/s]
 80%|██████████████████████████████████████████████████████████████▋               | 1014/1261 [13:31<03:19,  1.24it/s]
 80%|██████████████████████████████████████████████████████████████▊               | 1015/1261 [13:32<03:18,  1.24it/s]
 81%|██████████████████████████████████████████████████████████████▊               | 1016/1261 [13:32<03:17,  1.24it/s]
 81%|██████████████████████████████████████████████████████████████▉               | 1017/1261 [13:33<03:16,  1.24it/s]
 81%|██████████████████████████████████████████████████████████████▉               | 1018/1261 [13:34<03:14,  1.25it/s]
 81%|███████████████████████████████████████████████████████████████               | 1019/1261 [13:35<03:13,  1.25it/s]
 81%|███████████████████████████████████████████████████████████████               | 1020/1261 [13:36<03:13,  1.25it/s]
 81%|███████████████████████████████████████████████████████████████▏              | 1021/1261 [13:36<03:12,  1.25it/s]
 81%|███████████████████████████████████████████████████████████████▏              | 1022/1261 [13:37<03:12,  1.24it/s]
 81%|███████████████████████████████████████████████████████████████▎              | 1023/1261 [13:38<03:09,  1.25it/s]
 81%|███████████████████████████████████████████████████████████████▎              | 1024/1261 [13:39<03:09,  1.25it/s]
 81%|███████████████████████████████████████████████████████████████▍              | 1025/1261 [13:40<03:07,  1.26it/s]
 81%|███████████████████████████████████████████████████████████████▍              | 1026/1261 [13:40<03:07,  1.26it/s]
 81%|███████████████████████████████████████████████████████████████▌              | 1027/1261 [13:41<03:06,  1.25it/s]
 82%|███████████████████████████████████████████████████████████████▌              | 1028/1261 [13:42<03:07,  1.24it/s]
 82%|███████████████████████████████████████████████████████████████▋              | 1029/1261 [13:43<03:10,  1.22it/s]
 82%|███████████████████████████████████████████████████████████████▋              | 1030/1261 [13:44<03:11,  1.21it/s]
 82%|███████████████████████████████████████████████████████████████▊              | 1031/1261 [13:45<03:10,  1.21it/s]
 82%|███████████████████████████████████████████████████████████████▊              | 1032/1261 [13:45<03:08,  1.21it/s]
 82%|███████████████████████████████████████████████████████████████▉              | 1033/1261 [13:46<03:09,  1.21it/s]
 82%|███████████████████████████████████████████████████████████████▉              | 1034/1261 [13:47<03:05,  1.22it/s]
 82%|████████████████████████████████████████████████████████████████              | 1035/1261 [13:48<03:04,  1.22it/s]
 82%|████████████████████████████████████████████████████████████████              | 1036/1261 [13:49<03:03,  1.23it/s]
 82%|████████████████████████████████████████████████████████████████▏             | 1037/1261 [13:50<03:02,  1.23it/s]
 82%|████████████████████████████████████████████████████████████████▏             | 1038/1261 [13:50<03:02,  1.23it/s]
 82%|████████████████████████████████████████████████████████████████▎             | 1039/1261 [13:51<03:01,  1.23it/s]
 82%|████████████████████████████████████████████████████████████████▎             | 1040/1261 [13:52<02:58,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▍             | 1041/1261 [13:53<02:58,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▍             | 1042/1261 [13:54<02:56,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▌             | 1043/1261 [13:54<02:55,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▌             | 1044/1261 [13:55<02:54,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▋             | 1045/1261 [13:56<02:53,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▋             | 1046/1261 [13:57<02:53,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▊             | 1047/1261 [13:58<02:51,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▊             | 1048/1261 [13:58<02:51,  1.24it/s]
 83%|████████████████████████████████████████████████████████████████▉             | 1049/1261 [13:59<02:49,  1.25it/s]
 83%|████████████████████████████████████████████████████████████████▉             | 1050/1261 [14:00<02:48,  1.25it/s]
 83%|█████████████████████████████████████████████████████████████████             | 1051/1261 [14:01<02:50,  1.23it/s]
 83%|█████████████████████████████████████████████████████████████████             | 1052/1261 [14:02<03:00,  1.16it/s]
 84%|█████████████████████████████████████████████████████████████████▏            | 1053/1261 [14:03<02:58,  1.16it/s]
 84%|█████████████████████████████████████████████████████████████████▏            | 1054/1261 [14:03<02:53,  1.19it/s]
 84%|█████████████████████████████████████████████████████████████████▎            | 1055/1261 [14:04<02:50,  1.21it/s]
 84%|█████████████████████████████████████████████████████████████████▎            | 1056/1261 [14:05<02:47,  1.22it/s]
 84%|█████████████████████████████████████████████████████████████████▍            | 1057/1261 [14:06<02:45,  1.23it/s]
 84%|█████████████████████████████████████████████████████████████████▍            | 1058/1261 [14:07<02:42,  1.25it/s]
 84%|█████████████████████████████████████████████████████████████████▌            | 1059/1261 [14:07<02:42,  1.24it/s]
 84%|█████████████████████████████████████████████████████████████████▌            | 1060/1261 [14:08<02:41,  1.25it/s]
 84%|█████████████████████████████████████████████████████████████████▋            | 1061/1261 [14:09<02:40,  1.25it/s]
 84%|█████████████████████████████████████████████████████████████████▋            | 1062/1261 [14:10<02:39,  1.25it/s]
 84%|█████████████████████████████████████████████████████████████████▊            | 1063/1261 [14:11<02:38,  1.25it/s]
 84%|█████████████████████████████████████████████████████████████████▊            | 1064/1261 [14:11<02:38,  1.24it/s]
 84%|█████████████████████████████████████████████████████████████████▉            | 1065/1261 [14:12<02:37,  1.24it/s]
 85%|█████████████████████████████████████████████████████████████████▉            | 1066/1261 [14:13<02:36,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████            | 1067/1261 [14:14<02:35,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████            | 1068/1261 [14:15<02:34,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████            | 1069/1261 [14:15<02:33,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▏           | 1070/1261 [14:16<02:32,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▏           | 1071/1261 [14:17<02:31,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▎           | 1072/1261 [14:18<02:30,  1.26it/s]
 85%|██████████████████████████████████████████████████████████████████▎           | 1073/1261 [14:19<02:29,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▍           | 1074/1261 [14:19<02:29,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▍           | 1075/1261 [14:20<02:28,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▌           | 1076/1261 [14:21<02:28,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▌           | 1077/1261 [14:22<02:27,  1.25it/s]
 85%|██████████████████████████████████████████████████████████████████▋           | 1078/1261 [14:23<02:26,  1.25it/s]
 86%|██████████████████████████████████████████████████████████████████▋           | 1079/1261 [14:23<02:26,  1.24it/s]
 86%|██████████████████████████████████████████████████████████████████▊           | 1080/1261 [14:24<02:24,  1.25it/s]
 86%|██████████████████████████████████████████████████████████████████▊           | 1081/1261 [14:25<02:24,  1.25it/s]
 86%|██████████████████████████████████████████████████████████████████▉           | 1082/1261 [14:26<02:23,  1.25it/s]
 86%|██████████████████████████████████████████████████████████████████▉           | 1083/1261 [14:27<02:22,  1.25it/s]
 86%|███████████████████████████████████████████████████████████████████           | 1084/1261 [14:27<02:21,  1.25it/s]
 86%|███████████████████████████████████████████████████████████████████           | 1085/1261 [14:28<02:20,  1.25it/s]
 86%|███████████████████████████████████████████████████████████████████▏          | 1086/1261 [14:29<02:19,  1.25it/s]
 86%|███████████████████████████████████████████████████████████████████▏          | 1087/1261 [14:30<02:18,  1.25it/s]
 86%|███████████████████████████████████████████████████████████████████▎          | 1088/1261 [14:31<02:17,  1.26it/s]
 86%|███████████████████████████████████████████████████████████████████▎          | 1089/1261 [14:31<02:17,  1.25it/s]
 86%|███████████████████████████████████████████████████████████████████▍          | 1090/1261 [14:32<02:15,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▍          | 1091/1261 [14:33<02:14,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▌          | 1092/1261 [14:34<02:13,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▌          | 1093/1261 [14:35<02:13,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▋          | 1094/1261 [14:35<02:12,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▋          | 1095/1261 [14:36<02:11,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▊          | 1096/1261 [14:37<02:10,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▊          | 1097/1261 [14:38<02:10,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▉          | 1098/1261 [14:39<02:09,  1.26it/s]
 87%|███████████████████████████████████████████████████████████████████▉          | 1099/1261 [14:39<02:08,  1.26it/s]
 87%|████████████████████████████████████████████████████████████████████          | 1100/1261 [14:40<02:07,  1.26it/s]
 87%|████████████████████████████████████████████████████████████████████          | 1101/1261 [14:41<02:07,  1.26it/s]
 87%|████████████████████████████████████████████████████████████████████▏         | 1102/1261 [14:42<02:05,  1.26it/s]
 87%|████████████████████████████████████████████████████████████████████▏         | 1103/1261 [14:42<02:05,  1.26it/s]
 88%|████████████████████████████████████████████████████████████████████▎         | 1104/1261 [14:43<02:04,  1.26it/s]
 88%|████████████████████████████████████████████████████████████████████▎         | 1105/1261 [14:44<02:04,  1.26it/s]
 88%|████████████████████████████████████████████████████████████████████▍         | 1106/1261 [14:45<02:03,  1.25it/s]
 88%|████████████████████████████████████████████████████████████████████▍         | 1107/1261 [14:46<02:04,  1.24it/s]
 88%|████████████████████████████████████████████████████████████████████▌         | 1108/1261 [14:47<02:03,  1.23it/s]
 88%|████████████████████████████████████████████████████████████████████▌         | 1109/1261 [14:47<02:04,  1.22it/s]
 88%|████████████████████████████████████████████████████████████████████▋         | 1110/1261 [14:48<02:03,  1.23it/s]
 88%|████████████████████████████████████████████████████████████████████▋         | 1111/1261 [14:49<02:00,  1.24it/s]
 88%|████████████████████████████████████████████████████████████████████▊         | 1112/1261 [14:50<01:59,  1.25it/s]
 88%|████████████████████████████████████████████████████████████████████▊         | 1113/1261 [14:51<02:01,  1.21it/s]
 88%|████████████████████████████████████████████████████████████████████▉         | 1114/1261 [14:52<02:11,  1.12it/s]
 88%|████████████████████████████████████████████████████████████████████▉         | 1115/1261 [14:53<02:10,  1.12it/s]
 89%|█████████████████████████████████████████████████████████████████████         | 1116/1261 [14:53<02:06,  1.15it/s]
 89%|█████████████████████████████████████████████████████████████████████         | 1117/1261 [14:54<02:01,  1.18it/s]
 89%|█████████████████████████████████████████████████████████████████████▏        | 1118/1261 [14:55<01:58,  1.21it/s]
 89%|█████████████████████████████████████████████████████████████████████▏        | 1119/1261 [14:56<01:56,  1.22it/s]
 89%|█████████████████████████████████████████████████████████████████████▎        | 1120/1261 [14:57<01:54,  1.23it/s]
 89%|█████████████████████████████████████████████████████████████████████▎        | 1121/1261 [14:57<01:53,  1.23it/s]
 89%|█████████████████████████████████████████████████████████████████████▍        | 1122/1261 [14:58<01:52,  1.23it/s]
 89%|█████████████████████████████████████████████████████████████████████▍        | 1123/1261 [14:59<01:50,  1.24it/s]
 89%|█████████████████████████████████████████████████████████████████████▌        | 1124/1261 [15:00<01:49,  1.25it/s]
 89%|█████████████████████████████████████████████████████████████████████▌        | 1125/1261 [15:01<01:48,  1.25it/s]
 89%|█████████████████████████████████████████████████████████████████████▋        | 1126/1261 [15:01<01:47,  1.26it/s]
 89%|█████████████████████████████████████████████████████████████████████▋        | 1127/1261 [15:02<01:46,  1.26it/s]
 89%|█████████████████████████████████████████████████████████████████████▊        | 1128/1261 [15:03<01:46,  1.25it/s]
 90%|█████████████████████████████████████████████████████████████████████▊        | 1129/1261 [15:04<01:47,  1.22it/s]
 90%|█████████████████████████████████████████████████████████████████████▉        | 1130/1261 [15:05<01:47,  1.21it/s]
 90%|█████████████████████████████████████████████████████████████████████▉        | 1131/1261 [15:05<01:46,  1.22it/s]
 90%|██████████████████████████████████████████████████████████████████████        | 1132/1261 [15:06<01:44,  1.23it/s]
 90%|██████████████████████████████████████████████████████████████████████        | 1133/1261 [15:07<01:43,  1.24it/s]
 90%|██████████████████████████████████████████████████████████████████████▏       | 1134/1261 [15:08<01:41,  1.25it/s]
 90%|██████████████████████████████████████████████████████████████████████▏       | 1135/1261 [15:09<01:41,  1.25it/s]
 90%|██████████████████████████████████████████████████████████████████████▎       | 1136/1261 [15:09<01:39,  1.25it/s]
 90%|██████████████████████████████████████████████████████████████████████▎       | 1137/1261 [15:10<01:38,  1.26it/s]
 90%|██████████████████████████████████████████████████████████████████████▍       | 1138/1261 [15:11<01:37,  1.26it/s]
 90%|██████████████████████████████████████████████████████████████████████▍       | 1139/1261 [15:12<01:37,  1.25it/s]
 90%|██████████████████████████████████████████████████████████████████████▌       | 1140/1261 [15:13<01:36,  1.26it/s]
 90%|██████████████████████████████████████████████████████████████████████▌       | 1141/1261 [15:13<01:35,  1.26it/s]
 91%|██████████████████████████████████████████████████████████████████████▋       | 1142/1261 [15:14<01:34,  1.26it/s]
 91%|██████████████████████████████████████████████████████████████████████▋       | 1143/1261 [15:15<01:33,  1.27it/s]
 91%|██████████████████████████████████████████████████████████████████████▊       | 1144/1261 [15:16<01:32,  1.26it/s]
 91%|██████████████████████████████████████████████████████████████████████▊       | 1145/1261 [15:17<01:32,  1.26it/s]
 91%|██████████████████████████████████████████████████████████████████████▉       | 1146/1261 [15:17<01:30,  1.26it/s]
 91%|██████████████████████████████████████████████████████████████████████▉       | 1147/1261 [15:18<01:30,  1.27it/s]
 91%|███████████████████████████████████████████████████████████████████████       | 1148/1261 [15:19<01:29,  1.26it/s]
 91%|███████████████████████████████████████████████████████████████████████       | 1149/1261 [15:20<01:28,  1.26it/s]
 91%|███████████████████████████████████████████████████████████████████████▏      | 1150/1261 [15:21<01:28,  1.26it/s]
 91%|███████████████████████████████████████████████████████████████████████▏      | 1151/1261 [15:21<01:27,  1.26it/s]
 91%|███████████████████████████████████████████████████████████████████████▎      | 1152/1261 [15:22<01:26,  1.26it/s]
 91%|███████████████████████████████████████████████████████████████████████▎      | 1153/1261 [15:23<01:25,  1.26it/s]
 92%|███████████████████████████████████████████████████████████████████████▍      | 1154/1261 [15:24<01:24,  1.26it/s]
 92%|███████████████████████████████████████████████████████████████████████▍      | 1155/1261 [15:24<01:23,  1.26it/s]
 92%|███████████████████████████████████████████████████████████████████████▌      | 1156/1261 [15:25<01:23,  1.26it/s]
 92%|███████████████████████████████████████████████████████████████████████▌      | 1157/1261 [15:26<01:22,  1.26it/s]
 92%|███████████████████████████████████████████████████████████████████████▋      | 1158/1261 [15:27<01:21,  1.27it/s]
 92%|███████████████████████████████████████████████████████████████████████▋      | 1159/1261 [15:28<01:20,  1.27it/s]
 92%|███████████████████████████████████████████████████████████████████████▊      | 1160/1261 [15:28<01:19,  1.26it/s]
 92%|███████████████████████████████████████████████████████████████████████▊      | 1161/1261 [15:29<01:18,  1.28it/s]
 92%|███████████████████████████████████████████████████████████████████████▉      | 1162/1261 [15:30<01:17,  1.27it/s]
 92%|███████████████████████████████████████████████████████████████████████▉      | 1163/1261 [15:31<01:17,  1.27it/s]
 92%|████████████████████████████████████████████████████████████████████████      | 1164/1261 [15:32<01:15,  1.28it/s]
 92%|████████████████████████████████████████████████████████████████████████      | 1165/1261 [15:32<01:15,  1.27it/s]
 92%|████████████████████████████████████████████████████████████████████████      | 1166/1261 [15:33<01:15,  1.26it/s]
 93%|████████████████████████████████████████████████████████████████████████▏     | 1167/1261 [15:34<01:15,  1.24it/s]
 93%|████████████████████████████████████████████████████████████████████████▏     | 1168/1261 [15:35<01:16,  1.22it/s]
 93%|████████████████████████████████████████████████████████████████████████▎     | 1169/1261 [15:36<01:14,  1.23it/s]
 93%|████████████████████████████████████████████████████████████████████████▎     | 1170/1261 [15:36<01:13,  1.25it/s]
 93%|████████████████████████████████████████████████████████████████████████▍     | 1171/1261 [15:37<01:11,  1.26it/s]
 93%|████████████████████████████████████████████████████████████████████████▍     | 1172/1261 [15:38<01:10,  1.26it/s]
 93%|████████████████████████████████████████████████████████████████████████▌     | 1173/1261 [15:39<01:09,  1.27it/s]
 93%|████████████████████████████████████████████████████████████████████████▌     | 1174/1261 [15:40<01:08,  1.26it/s]
 93%|████████████████████████████████████████████████████████████████████████▋     | 1175/1261 [15:40<01:07,  1.27it/s]
 93%|████████████████████████████████████████████████████████████████████████▋     | 1176/1261 [15:41<01:07,  1.26it/s]
 93%|████████████████████████████████████████████████████████████████████████▊     | 1177/1261 [15:42<01:06,  1.26it/s]
 93%|████████████████████████████████████████████████████████████████████████▊     | 1178/1261 [15:43<01:06,  1.25it/s]
 93%|████████████████████████████████████████████████████████████████████████▉     | 1179/1261 [15:44<01:05,  1.24it/s]
 94%|████████████████████████████████████████████████████████████████████████▉     | 1180/1261 [15:44<01:04,  1.25it/s]
 94%|█████████████████████████████████████████████████████████████████████████     | 1181/1261 [15:45<01:03,  1.25it/s]
 94%|█████████████████████████████████████████████████████████████████████████     | 1182/1261 [15:46<01:02,  1.25it/s]
 94%|█████████████████████████████████████████████████████████████████████████▏    | 1183/1261 [15:47<01:01,  1.26it/s]
 94%|█████████████████████████████████████████████████████████████████████████▏    | 1184/1261 [15:48<01:01,  1.26it/s]
 94%|█████████████████████████████████████████████████████████████████████████▎    | 1185/1261 [15:48<01:00,  1.25it/s]
 94%|█████████████████████████████████████████████████████████████████████████▎    | 1186/1261 [15:49<00:59,  1.25it/s]
 94%|█████████████████████████████████████████████████████████████████████████▍    | 1187/1261 [15:50<00:58,  1.26it/s]
 94%|█████████████████████████████████████████████████████████████████████████▍    | 1188/1261 [15:51<00:58,  1.25it/s]
 94%|█████████████████████████████████████████████████████████████████████████▌    | 1189/1261 [15:52<00:57,  1.24it/s]
 94%|█████████████████████████████████████████████████████████████████████████▌    | 1190/1261 [15:52<00:57,  1.23it/s]
 94%|█████████████████████████████████████████████████████████████████████████▋    | 1191/1261 [15:53<00:56,  1.24it/s]
 95%|█████████████████████████████████████████████████████████████████████████▋    | 1192/1261 [15:54<00:55,  1.24it/s]
 95%|█████████████████████████████████████████████████████████████████████████▊    | 1193/1261 [15:55<00:54,  1.25it/s]
 95%|█████████████████████████████████████████████████████████████████████████▊    | 1194/1261 [15:56<00:53,  1.25it/s]
 95%|█████████████████████████████████████████████████████████████████████████▉    | 1195/1261 [15:56<00:52,  1.26it/s]
 95%|█████████████████████████████████████████████████████████████████████████▉    | 1196/1261 [15:57<00:51,  1.25it/s]
 95%|██████████████████████████████████████████████████████████████████████████    | 1197/1261 [15:58<00:51,  1.24it/s]
 95%|██████████████████████████████████████████████████████████████████████████    | 1198/1261 [15:59<00:50,  1.24it/s]
 95%|██████████████████████████████████████████████████████████████████████████▏   | 1199/1261 [16:00<00:49,  1.25it/s]
 95%|██████████████████████████████████████████████████████████████████████████▏   | 1200/1261 [16:00<00:48,  1.25it/s]
 95%|██████████████████████████████████████████████████████████████████████████▎   | 1201/1261 [16:01<00:47,  1.26it/s]
 95%|██████████████████████████████████████████████████████████████████████████▎   | 1202/1261 [16:02<00:47,  1.25it/s]
 95%|██████████████████████████████████████████████████████████████████████████▍   | 1203/1261 [16:03<00:46,  1.25it/s]
 95%|██████████████████████████████████████████████████████████████████████████▍   | 1204/1261 [16:04<00:45,  1.25it/s]
 96%|██████████████████████████████████████████████████████████████████████████▌   | 1205/1261 [16:04<00:44,  1.25it/s]
 96%|██████████████████████████████████████████████████████████████████████████▌   | 1206/1261 [16:05<00:44,  1.24it/s]
 96%|██████████████████████████████████████████████████████████████████████████▋   | 1207/1261 [16:06<00:43,  1.25it/s]
 96%|██████████████████████████████████████████████████████████████████████████▋   | 1208/1261 [16:07<00:42,  1.25it/s]
 96%|██████████████████████████████████████████████████████████████████████████▊   | 1209/1261 [16:08<00:41,  1.25it/s]
 96%|██████████████████████████████████████████████████████████████████████████▊   | 1210/1261 [16:08<00:40,  1.25it/s]
 96%|██████████████████████████████████████████████████████████████████████████▉   | 1211/1261 [16:09<00:40,  1.24it/s]
 96%|██████████████████████████████████████████████████████████████████████████▉   | 1212/1261 [16:10<00:39,  1.25it/s]
 96%|███████████████████████████████████████████████████████████████████████████   | 1213/1261 [16:11<00:38,  1.24it/s]
 96%|███████████████████████████████████████████████████████████████████████████   | 1214/1261 [16:12<00:37,  1.24it/s]
 96%|███████████████████████████████████████████████████████████████████████████▏  | 1215/1261 [16:12<00:37,  1.24it/s]
 96%|███████████████████████████████████████████████████████████████████████████▏  | 1216/1261 [16:13<00:36,  1.24it/s]
 97%|███████████████████████████████████████████████████████████████████████████▎  | 1217/1261 [16:14<00:35,  1.24it/s]
 97%|███████████████████████████████████████████████████████████████████████████▎  | 1218/1261 [16:15<00:34,  1.24it/s]
 97%|███████████████████████████████████████████████████████████████████████████▍  | 1219/1261 [16:16<00:33,  1.25it/s]
 97%|███████████████████████████████████████████████████████████████████████████▍  | 1220/1261 [16:16<00:32,  1.25it/s]
 97%|███████████████████████████████████████████████████████████████████████████▌  | 1221/1261 [16:17<00:31,  1.26it/s]
 97%|███████████████████████████████████████████████████████████████████████████▌  | 1222/1261 [16:18<00:31,  1.26it/s]
 97%|███████████████████████████████████████████████████████████████████████████▋  | 1223/1261 [16:19<00:30,  1.25it/s]
 97%|███████████████████████████████████████████████████████████████████████████▋  | 1224/1261 [16:20<00:29,  1.25it/s]
 97%|███████████████████████████████████████████████████████████████████████████▊  | 1225/1261 [16:20<00:28,  1.25it/s]
 97%|███████████████████████████████████████████████████████████████████████████▊  | 1226/1261 [16:21<00:27,  1.25it/s]
 97%|███████████████████████████████████████████████████████████████████████████▉  | 1227/1261 [16:22<00:26,  1.27it/s]
 97%|███████████████████████████████████████████████████████████████████████████▉  | 1228/1261 [16:23<00:26,  1.26it/s]
 97%|████████████████████████████████████████████████████████████████████████████  | 1229/1261 [16:24<00:25,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████  | 1230/1261 [16:24<00:24,  1.27it/s]
 98%|████████████████████████████████████████████████████████████████████████████▏ | 1231/1261 [16:25<00:23,  1.27it/s]
 98%|████████████████████████████████████████████████████████████████████████████▏ | 1232/1261 [16:26<00:23,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████▎ | 1233/1261 [16:27<00:22,  1.25it/s]
 98%|████████████████████████████████████████████████████████████████████████████▎ | 1234/1261 [16:28<00:21,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████▍ | 1235/1261 [16:28<00:20,  1.25it/s]
 98%|████████████████████████████████████████████████████████████████████████████▍ | 1236/1261 [16:29<00:19,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████▌ | 1237/1261 [16:30<00:19,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████▌ | 1238/1261 [16:31<00:18,  1.25it/s]
 98%|████████████████████████████████████████████████████████████████████████████▋ | 1239/1261 [16:32<00:17,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████▋ | 1240/1261 [16:32<00:16,  1.25it/s]
 98%|████████████████████████████████████████████████████████████████████████████▊ | 1241/1261 [16:33<00:15,  1.26it/s]
 98%|████████████████████████████████████████████████████████████████████████████▊ | 1242/1261 [16:34<00:15,  1.26it/s]
 99%|████████████████████████████████████████████████████████████████████████████▉ | 1243/1261 [16:35<00:14,  1.25it/s]
 99%|████████████████████████████████████████████████████████████████████████████▉ | 1244/1261 [16:36<00:13,  1.25it/s]
 99%|█████████████████████████████████████████████████████████████████████████████ | 1245/1261 [16:36<00:12,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████ | 1246/1261 [16:37<00:11,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▏| 1247/1261 [16:38<00:11,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▏| 1248/1261 [16:39<00:10,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▎| 1249/1261 [16:39<00:09,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▎| 1250/1261 [16:40<00:08,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▍| 1251/1261 [16:41<00:07,  1.27it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▍| 1252/1261 [16:42<00:07,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▌| 1253/1261 [16:43<00:06,  1.26it/s]
 99%|█████████████████████████████████████████████████████████████████████████████▌| 1254/1261 [16:43<00:05,  1.27it/s]
100%|█████████████████████████████████████████████████████████████████████████████▋| 1255/1261 [16:44<00:04,  1.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████▋| 1256/1261 [16:45<00:03,  1.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████▊| 1257/1261 [16:46<00:03,  1.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████▊| 1258/1261 [16:47<00:02,  1.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████▉| 1259/1261 [16:47<00:01,  1.26it/s]
100%|█████████████████████████████████████████████████████████████████████████████▉| 1260/1261 [16:48<00:00,  1.27it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: project_video_output.mp4 

Wall time: 16min 49s

Process Challenge Video

In [69]:
left_line = Line()
right_line = Line()
video_output1 = 'challenge_video_output.mp4'
video_input1 = VideoFileClip('challenge_video.mp4')
processed_video = video_input1.fl_image(process_vedio)
%time processed_video.write_videofile(video_output1, audio=False)
[MoviePy] >>>> Building video challenge_video_output.mp4
[MoviePy] Writing video challenge_video_output.mp4
  0%|                                                                                          | 0/485 [00:00<?, ?it/s]
  0%|▏                                                                                 | 1/485 [00:00<06:20,  1.27it/s]
  0%|▎                                                                                 | 2/485 [00:01<06:27,  1.25it/s]
  1%|▌                                                                                 | 3/485 [00:02<06:31,  1.23it/s]
  1%|▋                                                                                 | 4/485 [00:03<06:35,  1.22it/s]
  1%|▊                                                                                 | 5/485 [00:04<06:33,  1.22it/s]
  1%|█                                                                                 | 6/485 [00:04<06:25,  1.24it/s]
  1%|█▏                                                                                | 7/485 [00:05<06:20,  1.26it/s]
  2%|█▎                                                                                | 8/485 [00:06<06:15,  1.27it/s]
  2%|█▌                                                                                | 9/485 [00:07<06:13,  1.27it/s]
  2%|█▋                                                                               | 10/485 [00:07<06:11,  1.28it/s]
  2%|█▊                                                                               | 11/485 [00:08<06:10,  1.28it/s]
  2%|██                                                                               | 12/485 [00:09<06:14,  1.26it/s]
  3%|██▏                                                                              | 13/485 [00:10<06:11,  1.27it/s]
  3%|██▎                                                                              | 14/485 [00:11<06:11,  1.27it/s]
  3%|██▌                                                                              | 15/485 [00:11<06:09,  1.27it/s]
  3%|██▋                                                                              | 16/485 [00:12<06:06,  1.28it/s]
  4%|██▊                                                                              | 17/485 [00:13<06:05,  1.28it/s]
  4%|███                                                                              | 18/485 [00:14<06:03,  1.29it/s]
  4%|███▏                                                                             | 19/485 [00:15<06:01,  1.29it/s]
  4%|███▎                                                                             | 20/485 [00:15<06:00,  1.29it/s]
  4%|███▌                                                                             | 21/485 [00:16<05:58,  1.29it/s]
  5%|███▋                                                                             | 22/485 [00:17<05:57,  1.29it/s]
  5%|███▊                                                                             | 23/485 [00:18<05:55,  1.30it/s]
  5%|████                                                                             | 24/485 [00:18<05:53,  1.30it/s]
  5%|████▏                                                                            | 25/485 [00:19<05:55,  1.29it/s]
  5%|████▎                                                                            | 26/485 [00:20<05:55,  1.29it/s]
  6%|████▌                                                                            | 27/485 [00:21<05:54,  1.29it/s]
  6%|████▋                                                                            | 28/485 [00:21<05:54,  1.29it/s]
  6%|████▊                                                                            | 29/485 [00:22<05:51,  1.30it/s]
  6%|█████                                                                            | 30/485 [00:23<05:51,  1.29it/s]
  6%|█████▏                                                                           | 31/485 [00:24<05:50,  1.30it/s]
  7%|█████▎                                                                           | 32/485 [00:25<05:48,  1.30it/s]
  7%|█████▌                                                                           | 33/485 [00:25<05:48,  1.30it/s]
  7%|█████▋                                                                           | 34/485 [00:26<05:48,  1.29it/s]
  7%|█████▊                                                                           | 35/485 [00:27<05:49,  1.29it/s]
  7%|██████                                                                           | 36/485 [00:28<05:49,  1.28it/s]
  8%|██████▏                                                                          | 37/485 [00:28<05:48,  1.29it/s]
  8%|██████▎                                                                          | 38/485 [00:29<05:46,  1.29it/s]
  8%|██████▌                                                                          | 39/485 [00:30<05:45,  1.29it/s]
  8%|██████▋                                                                          | 40/485 [00:31<05:47,  1.28it/s]
  8%|██████▊                                                                          | 41/485 [00:32<05:45,  1.28it/s]
  9%|███████                                                                          | 42/485 [00:32<05:43,  1.29it/s]
  9%|███████▏                                                                         | 43/485 [00:33<05:45,  1.28it/s]
  9%|███████▎                                                                         | 44/485 [00:34<05:42,  1.29it/s]
  9%|███████▌                                                                         | 45/485 [00:35<05:40,  1.29it/s]
  9%|███████▋                                                                         | 46/485 [00:35<05:41,  1.29it/s]
 10%|███████▊                                                                         | 47/485 [00:36<05:40,  1.29it/s]
 10%|████████                                                                         | 48/485 [00:37<05:38,  1.29it/s]
 10%|████████▏                                                                        | 49/485 [00:38<05:39,  1.29it/s]
 10%|████████▎                                                                        | 50/485 [00:39<05:38,  1.28it/s]
 11%|████████▌                                                                        | 51/485 [00:39<05:37,  1.29it/s]
 11%|████████▋                                                                        | 52/485 [00:40<05:35,  1.29it/s]
 11%|████████▊                                                                        | 53/485 [00:41<05:36,  1.28it/s]
 11%|█████████                                                                        | 54/485 [00:42<05:35,  1.29it/s]
 11%|█████████▏                                                                       | 55/485 [00:42<05:34,  1.29it/s]
 12%|█████████▎                                                                       | 56/485 [00:43<05:32,  1.29it/s]
 12%|█████████▌                                                                       | 57/485 [00:44<05:32,  1.29it/s]
 12%|█████████▋                                                                       | 58/485 [00:45<05:31,  1.29it/s]
 12%|█████████▊                                                                       | 59/485 [00:46<05:30,  1.29it/s]
 12%|██████████                                                                       | 60/485 [00:46<05:31,  1.28it/s]
 13%|██████████▏                                                                      | 61/485 [00:47<05:31,  1.28it/s]
 13%|██████████▎                                                                      | 62/485 [00:48<05:29,  1.29it/s]
 13%|██████████▌                                                                      | 63/485 [00:49<05:26,  1.29it/s]
 13%|██████████▋                                                                      | 64/485 [00:49<05:24,  1.30it/s]
 13%|██████████▊                                                                      | 65/485 [00:50<05:24,  1.29it/s]
 14%|███████████                                                                      | 66/485 [00:51<05:23,  1.29it/s]
 14%|███████████▏                                                                     | 67/485 [00:52<05:22,  1.30it/s]
 14%|███████████▎                                                                     | 68/485 [00:53<05:22,  1.29it/s]
 14%|███████████▌                                                                     | 69/485 [00:53<05:20,  1.30it/s]
 14%|███████████▋                                                                     | 70/485 [00:54<05:19,  1.30it/s]
 15%|███████████▊                                                                     | 71/485 [00:55<05:20,  1.29it/s]
 15%|████████████                                                                     | 72/485 [00:56<05:20,  1.29it/s]
 15%|████████████▏                                                                    | 73/485 [00:56<05:20,  1.29it/s]
 15%|████████████▎                                                                    | 74/485 [00:57<05:18,  1.29it/s]
 15%|████████████▌                                                                    | 75/485 [00:58<05:14,  1.30it/s]
 16%|████████████▋                                                                    | 76/485 [00:59<05:13,  1.31it/s]
 16%|████████████▊                                                                    | 77/485 [00:59<05:14,  1.30it/s]
 16%|█████████████                                                                    | 78/485 [01:00<05:13,  1.30it/s]
 16%|█████████████▏                                                                   | 79/485 [01:01<05:11,  1.30it/s]
 16%|█████████████▎                                                                   | 80/485 [01:02<05:11,  1.30it/s]
 17%|█████████████▌                                                                   | 81/485 [01:03<05:10,  1.30it/s]
 17%|█████████████▋                                                                   | 82/485 [01:03<05:09,  1.30it/s]
 17%|█████████████▊                                                                   | 83/485 [01:04<05:08,  1.30it/s]
 17%|██████████████                                                                   | 84/485 [01:05<05:06,  1.31it/s]
 18%|██████████████▏                                                                  | 85/485 [01:06<05:04,  1.31it/s]
 18%|██████████████▎                                                                  | 86/485 [01:06<05:04,  1.31it/s]
 18%|██████████████▌                                                                  | 87/485 [01:07<05:03,  1.31it/s]
 18%|██████████████▋                                                                  | 88/485 [01:08<05:01,  1.32it/s]
 18%|██████████████▊                                                                  | 89/485 [01:09<05:01,  1.31it/s]
 19%|███████████████                                                                  | 90/485 [01:09<05:00,  1.32it/s]
 19%|███████████████▏                                                                 | 91/485 [01:10<05:00,  1.31it/s]
 19%|███████████████▎                                                                 | 92/485 [01:11<05:00,  1.31it/s]
 19%|███████████████▌                                                                 | 93/485 [01:12<04:59,  1.31it/s]
 19%|███████████████▋                                                                 | 94/485 [01:12<04:59,  1.30it/s]
 20%|███████████████▊                                                                 | 95/485 [01:13<04:58,  1.31it/s]
 20%|████████████████                                                                 | 96/485 [01:14<04:56,  1.31it/s]
 20%|████████████████▏                                                                | 97/485 [01:15<04:54,  1.32it/s]
 20%|████████████████▎                                                                | 98/485 [01:15<04:54,  1.31it/s]
 20%|████████████████▌                                                                | 99/485 [01:16<04:53,  1.31it/s]
 21%|████████████████▍                                                               | 100/485 [01:17<04:54,  1.31it/s]
 21%|████████████████▋                                                               | 101/485 [01:18<04:52,  1.31it/s]
 21%|████████████████▊                                                               | 102/485 [01:19<04:52,  1.31it/s]
 21%|████████████████▉                                                               | 103/485 [01:19<04:51,  1.31it/s]
 21%|█████████████████▏                                                              | 104/485 [01:20<04:51,  1.31it/s]
 22%|█████████████████▎                                                              | 105/485 [01:21<04:50,  1.31it/s]
 22%|█████████████████▍                                                              | 106/485 [01:22<04:51,  1.30it/s]
 22%|█████████████████▋                                                              | 107/485 [01:22<04:48,  1.31it/s]
 22%|█████████████████▊                                                              | 108/485 [01:23<04:48,  1.31it/s]
 22%|█████████████████▉                                                              | 109/485 [01:24<04:47,  1.31it/s]
 23%|██████████████████▏                                                             | 110/485 [01:25<04:46,  1.31it/s]
 23%|██████████████████▎                                                             | 111/485 [01:25<04:47,  1.30it/s]
 23%|██████████████████▍                                                             | 112/485 [01:26<04:45,  1.31it/s]
 23%|██████████████████▋                                                             | 113/485 [01:27<04:46,  1.30it/s]
 24%|██████████████████▊                                                             | 114/485 [01:28<04:45,  1.30it/s]
 24%|██████████████████▉                                                             | 115/485 [01:29<04:44,  1.30it/s]
 24%|███████████████████▏                                                            | 116/485 [01:29<04:44,  1.30it/s]
 24%|███████████████████▎                                                            | 117/485 [01:30<04:43,  1.30it/s]
 24%|███████████████████▍                                                            | 118/485 [01:31<04:42,  1.30it/s]
 25%|███████████████████▋                                                            | 119/485 [01:32<04:45,  1.28it/s]
 25%|███████████████████▊                                                            | 120/485 [01:32<04:43,  1.29it/s]
 25%|███████████████████▉                                                            | 121/485 [01:33<04:42,  1.29it/s]
 25%|████████████████████                                                            | 122/485 [01:34<04:40,  1.30it/s]
 25%|████████████████████▎                                                           | 123/485 [01:35<04:40,  1.29it/s]
 26%|████████████████████▍                                                           | 124/485 [01:35<04:38,  1.30it/s]
 26%|████████████████████▌                                                           | 125/485 [01:36<04:39,  1.29it/s]
 26%|████████████████████▊                                                           | 126/485 [01:37<04:36,  1.30it/s]
 26%|████████████████████▉                                                           | 127/485 [01:38<04:35,  1.30it/s]
 26%|█████████████████████                                                           | 128/485 [01:39<04:34,  1.30it/s]
 27%|█████████████████████▎                                                          | 129/485 [01:39<04:33,  1.30it/s]
 27%|█████████████████████▍                                                          | 130/485 [01:40<04:31,  1.31it/s]
 27%|█████████████████████▌                                                          | 131/485 [01:41<04:31,  1.30it/s]
 27%|█████████████████████▊                                                          | 132/485 [01:42<04:31,  1.30it/s]
 27%|█████████████████████▉                                                          | 133/485 [01:42<04:29,  1.31it/s]
 28%|██████████████████████                                                          | 134/485 [01:43<04:25,  1.32it/s]
 28%|██████████████████████▎                                                         | 135/485 [01:44<04:24,  1.32it/s]
 28%|██████████████████████▍                                                         | 136/485 [01:45<04:22,  1.33it/s]
 28%|██████████████████████▌                                                         | 137/485 [01:45<04:23,  1.32it/s]
 28%|██████████████████████▊                                                         | 138/485 [01:46<04:24,  1.31it/s]
 29%|██████████████████████▉                                                         | 139/485 [01:47<04:25,  1.30it/s]
 29%|███████████████████████                                                         | 140/485 [01:48<04:30,  1.27it/s]
 29%|███████████████████████▎                                                        | 141/485 [01:49<04:29,  1.27it/s]
 29%|███████████████████████▍                                                        | 142/485 [01:49<04:28,  1.28it/s]
 29%|███████████████████████▌                                                        | 143/485 [01:50<04:32,  1.25it/s]
 30%|███████████████████████▊                                                        | 144/485 [01:51<04:33,  1.24it/s]
 30%|███████████████████████▉                                                        | 145/485 [01:52<04:35,  1.24it/s]
 30%|████████████████████████                                                        | 146/485 [01:53<04:32,  1.24it/s]
 30%|████████████████████████▏                                                       | 147/485 [01:53<04:29,  1.25it/s]
 31%|████████████████████████▍                                                       | 148/485 [01:54<04:28,  1.26it/s]
 31%|████████████████████████▌                                                       | 149/485 [01:55<04:26,  1.26it/s]
 31%|████████████████████████▋                                                       | 150/485 [01:56<04:25,  1.26it/s]
 31%|████████████████████████▉                                                       | 151/485 [01:57<04:24,  1.26it/s]
 31%|█████████████████████████                                                       | 152/485 [01:57<04:22,  1.27it/s]
 32%|█████████████████████████▏                                                      | 153/485 [01:58<04:21,  1.27it/s]
 32%|█████████████████████████▍                                                      | 154/485 [01:59<04:20,  1.27it/s]
 32%|█████████████████████████▌                                                      | 155/485 [02:00<04:20,  1.27it/s]
 32%|█████████████████████████▋                                                      | 156/485 [02:00<04:19,  1.27it/s]
 32%|█████████████████████████▉                                                      | 157/485 [02:01<04:19,  1.26it/s]
 33%|██████████████████████████                                                      | 158/485 [02:02<04:17,  1.27it/s]
 33%|██████████████████████████▏                                                     | 159/485 [02:03<04:16,  1.27it/s]
 33%|██████████████████████████▍                                                     | 160/485 [02:04<04:15,  1.27it/s]
 33%|██████████████████████████▌                                                     | 161/485 [02:04<04:16,  1.27it/s]
 33%|██████████████████████████▋                                                     | 162/485 [02:05<04:14,  1.27it/s]
 34%|██████████████████████████▉                                                     | 163/485 [02:06<04:14,  1.27it/s]
 34%|███████████████████████████                                                     | 164/485 [02:07<04:13,  1.27it/s]
 34%|███████████████████████████▏                                                    | 165/485 [02:08<04:12,  1.27it/s]
 34%|███████████████████████████▍                                                    | 166/485 [02:08<04:10,  1.27it/s]
 34%|███████████████████████████▌                                                    | 167/485 [02:09<04:10,  1.27it/s]
 35%|███████████████████████████▋                                                    | 168/485 [02:10<04:09,  1.27it/s]
 35%|███████████████████████████▉                                                    | 169/485 [02:11<04:08,  1.27it/s]
 35%|████████████████████████████                                                    | 170/485 [02:11<04:07,  1.27it/s]
 35%|████████████████████████████▏                                                   | 171/485 [02:12<04:13,  1.24it/s]
 35%|████████████████████████████▎                                                   | 172/485 [02:13<04:15,  1.22it/s]
 36%|████████████████████████████▌                                                   | 173/485 [02:14<04:15,  1.22it/s]
 36%|████████████████████████████▋                                                   | 174/485 [02:15<04:15,  1.22it/s]
 36%|████████████████████████████▊                                                   | 175/485 [02:16<04:12,  1.23it/s]
 36%|█████████████████████████████                                                   | 176/485 [02:16<04:08,  1.25it/s]
 36%|█████████████████████████████▏                                                  | 177/485 [02:17<04:09,  1.24it/s]
 37%|█████████████████████████████▎                                                  | 178/485 [02:18<04:09,  1.23it/s]
 37%|█████████████████████████████▌                                                  | 179/485 [02:19<04:07,  1.24it/s]
 37%|█████████████████████████████▋                                                  | 180/485 [02:20<04:05,  1.24it/s]
 37%|█████████████████████████████▊                                                  | 181/485 [02:20<04:02,  1.26it/s]
 38%|██████████████████████████████                                                  | 182/485 [02:21<04:00,  1.26it/s]
 38%|██████████████████████████████▏                                                 | 183/485 [02:22<03:59,  1.26it/s]
 38%|██████████████████████████████▎                                                 | 184/485 [02:23<03:58,  1.26it/s]
 38%|██████████████████████████████▌                                                 | 185/485 [02:24<03:56,  1.27it/s]
 38%|██████████████████████████████▋                                                 | 186/485 [02:24<03:56,  1.26it/s]
 39%|██████████████████████████████▊                                                 | 187/485 [02:25<03:59,  1.24it/s]
 39%|███████████████████████████████                                                 | 188/485 [02:26<04:00,  1.24it/s]
 39%|███████████████████████████████▏                                                | 189/485 [02:27<03:57,  1.24it/s]
 39%|███████████████████████████████▎                                                | 190/485 [02:28<03:55,  1.25it/s]
 39%|███████████████████████████████▌                                                | 191/485 [02:28<04:01,  1.21it/s]
 40%|███████████████████████████████▋                                                | 192/485 [02:29<04:00,  1.22it/s]
 40%|███████████████████████████████▊                                                | 193/485 [02:30<03:58,  1.22it/s]
 40%|████████████████████████████████                                                | 194/485 [02:31<03:54,  1.24it/s]
 40%|████████████████████████████████▏                                               | 195/485 [02:32<03:53,  1.24it/s]
 40%|████████████████████████████████▎                                               | 196/485 [02:33<03:52,  1.24it/s]
 41%|████████████████████████████████▍                                               | 197/485 [02:33<03:53,  1.23it/s]
 41%|████████████████████████████████▋                                               | 198/485 [02:34<03:52,  1.23it/s]
 41%|████████████████████████████████▊                                               | 199/485 [02:35<03:50,  1.24it/s]
 41%|████████████████████████████████▉                                               | 200/485 [02:36<03:50,  1.24it/s]
 41%|█████████████████████████████████▏                                              | 201/485 [02:37<03:48,  1.24it/s]
 42%|█████████████████████████████████▎                                              | 202/485 [02:37<03:46,  1.25it/s]
 42%|█████████████████████████████████▍                                              | 203/485 [02:38<03:54,  1.20it/s]
 42%|█████████████████████████████████▋                                              | 204/485 [02:39<04:01,  1.17it/s]
 42%|█████████████████████████████████▊                                              | 205/485 [02:40<03:59,  1.17it/s]
 42%|█████████████████████████████████▉                                              | 206/485 [02:41<03:54,  1.19it/s]
 43%|██████████████████████████████████▏                                             | 207/485 [02:42<03:49,  1.21it/s]
 43%|██████████████████████████████████▎                                             | 208/485 [02:42<03:45,  1.23it/s]
 43%|██████████████████████████████████▍                                             | 209/485 [02:43<03:40,  1.25it/s]
 43%|██████████████████████████████████▋                                             | 210/485 [02:44<03:40,  1.24it/s]
 44%|██████████████████████████████████▊                                             | 211/485 [02:45<03:39,  1.25it/s]
 44%|██████████████████████████████████▉                                             | 212/485 [02:46<03:36,  1.26it/s]
 44%|███████████████████████████████████▏                                            | 213/485 [02:46<03:35,  1.26it/s]
 44%|███████████████████████████████████▎                                            | 214/485 [02:47<03:33,  1.27it/s]
 44%|███████████████████████████████████▍                                            | 215/485 [02:48<03:33,  1.26it/s]
 45%|███████████████████████████████████▋                                            | 216/485 [02:49<03:33,  1.26it/s]
 45%|███████████████████████████████████▊                                            | 217/485 [02:49<03:31,  1.26it/s]
 45%|███████████████████████████████████▉                                            | 218/485 [02:50<03:30,  1.27it/s]
 45%|████████████████████████████████████                                            | 219/485 [02:51<03:28,  1.28it/s]
 45%|████████████████████████████████████▎                                           | 220/485 [02:52<03:27,  1.28it/s]
 46%|████████████████████████████████████▍                                           | 221/485 [02:53<03:27,  1.27it/s]
 46%|████████████████████████████████████▌                                           | 222/485 [02:53<03:27,  1.27it/s]
 46%|████████████████████████████████████▊                                           | 223/485 [02:54<03:28,  1.26it/s]
 46%|████████████████████████████████████▉                                           | 224/485 [02:55<03:25,  1.27it/s]
 46%|█████████████████████████████████████                                           | 225/485 [02:56<03:24,  1.27it/s]
 47%|█████████████████████████████████████▎                                          | 226/485 [02:57<03:23,  1.27it/s]
 47%|█████████████████████████████████████▍                                          | 227/485 [02:57<03:22,  1.27it/s]
 47%|█████████████████████████████████████▌                                          | 228/485 [02:58<03:22,  1.27it/s]
 47%|█████████████████████████████████████▊                                          | 229/485 [02:59<03:21,  1.27it/s]
 47%|█████████████████████████████████████▉                                          | 230/485 [03:00<03:23,  1.25it/s]
 48%|██████████████████████████████████████                                          | 231/485 [03:01<03:26,  1.23it/s]
 48%|██████████████████████████████████████▎                                         | 232/485 [03:02<03:34,  1.18it/s]
 48%|██████████████████████████████████████▍                                         | 233/485 [03:02<03:39,  1.15it/s]
 48%|██████████████████████████████████████▌                                         | 234/485 [03:03<03:39,  1.15it/s]
 48%|██████████████████████████████████████▊                                         | 235/485 [03:04<03:38,  1.15it/s]
 49%|██████████████████████████████████████▉                                         | 236/485 [03:05<03:39,  1.14it/s]
 49%|███████████████████████████████████████                                         | 237/485 [03:06<03:38,  1.14it/s]
 49%|███████████████████████████████████████▎                                        | 238/485 [03:07<03:37,  1.14it/s]
 49%|███████████████████████████████████████▍                                        | 239/485 [03:08<03:37,  1.13it/s]
 49%|███████████████████████████████████████▌                                        | 240/485 [03:09<03:36,  1.13it/s]
 50%|███████████████████████████████████████▊                                        | 241/485 [03:09<03:30,  1.16it/s]
 50%|███████████████████████████████████████▉                                        | 242/485 [03:10<03:25,  1.18it/s]
 50%|████████████████████████████████████████                                        | 243/485 [03:11<03:20,  1.21it/s]
 50%|████████████████████████████████████████▏                                       | 244/485 [03:12<03:16,  1.22it/s]
 51%|████████████████████████████████████████▍                                       | 245/485 [03:13<03:14,  1.24it/s]
 51%|████████████████████████████████████████▌                                       | 246/485 [03:13<03:12,  1.24it/s]
 51%|████████████████████████████████████████▋                                       | 247/485 [03:14<03:10,  1.25it/s]
 51%|████████████████████████████████████████▉                                       | 248/485 [03:15<03:09,  1.25it/s]
 51%|█████████████████████████████████████████                                       | 249/485 [03:16<03:08,  1.25it/s]
 52%|█████████████████████████████████████████▏                                      | 250/485 [03:17<03:08,  1.25it/s]
 52%|█████████████████████████████████████████▍                                      | 251/485 [03:17<03:07,  1.25it/s]
 52%|█████████████████████████████████████████▌                                      | 252/485 [03:18<03:06,  1.25it/s]
 52%|█████████████████████████████████████████▋                                      | 253/485 [03:19<03:06,  1.25it/s]
 52%|█████████████████████████████████████████▉                                      | 254/485 [03:20<03:05,  1.24it/s]
 53%|██████████████████████████████████████████                                      | 255/485 [03:21<03:04,  1.25it/s]
 53%|██████████████████████████████████████████▏                                     | 256/485 [03:21<03:02,  1.25it/s]
 53%|██████████████████████████████████████████▍                                     | 257/485 [03:22<03:01,  1.25it/s]
 53%|██████████████████████████████████████████▌                                     | 258/485 [03:23<03:00,  1.26it/s]
 53%|██████████████████████████████████████████▋                                     | 259/485 [03:24<02:59,  1.26it/s]
 54%|██████████████████████████████████████████▉                                     | 260/485 [03:25<02:59,  1.25it/s]
 54%|███████████████████████████████████████████                                     | 261/485 [03:25<02:57,  1.26it/s]
 54%|███████████████████████████████████████████▏                                    | 262/485 [03:26<02:57,  1.26it/s]
 54%|███████████████████████████████████████████▍                                    | 263/485 [03:27<02:55,  1.26it/s]
 54%|███████████████████████████████████████████▌                                    | 264/485 [03:28<02:54,  1.26it/s]
 55%|███████████████████████████████████████████▋                                    | 265/485 [03:29<02:54,  1.26it/s]
 55%|███████████████████████████████████████████▉                                    | 266/485 [03:29<02:53,  1.26it/s]
 55%|████████████████████████████████████████████                                    | 267/485 [03:30<02:52,  1.27it/s]
 55%|████████████████████████████████████████████▏                                   | 268/485 [03:31<02:51,  1.27it/s]
 55%|████████████████████████████████████████████▎                                   | 269/485 [03:32<02:50,  1.27it/s]
 56%|████████████████████████████████████████████▌                                   | 270/485 [03:32<02:49,  1.27it/s]
 56%|████████████████████████████████████████████▋                                   | 271/485 [03:33<02:48,  1.27it/s]
 56%|████████████████████████████████████████████▊                                   | 272/485 [03:34<02:47,  1.27it/s]
 56%|█████████████████████████████████████████████                                   | 273/485 [03:35<02:46,  1.27it/s]
 56%|█████████████████████████████████████████████▏                                  | 274/485 [03:36<02:46,  1.27it/s]
 57%|█████████████████████████████████████████████▎                                  | 275/485 [03:36<02:45,  1.27it/s]
 57%|█████████████████████████████████████████████▌                                  | 276/485 [03:37<02:45,  1.27it/s]
 57%|█████████████████████████████████████████████▋                                  | 277/485 [03:38<02:45,  1.26it/s]
 57%|█████████████████████████████████████████████▊                                  | 278/485 [03:39<02:44,  1.26it/s]
 58%|██████████████████████████████████████████████                                  | 279/485 [03:40<02:43,  1.26it/s]
 58%|██████████████████████████████████████████████▏                                 | 280/485 [03:40<02:43,  1.26it/s]
 58%|██████████████████████████████████████████████▎                                 | 281/485 [03:41<02:41,  1.26it/s]
 58%|██████████████████████████████████████████████▌                                 | 282/485 [03:42<02:39,  1.27it/s]
 58%|██████████████████████████████████████████████▋                                 | 283/485 [03:43<02:39,  1.27it/s]
 59%|██████████████████████████████████████████████▊                                 | 284/485 [03:44<02:38,  1.27it/s]
 59%|███████████████████████████████████████████████                                 | 285/485 [03:44<02:37,  1.27it/s]
 59%|███████████████████████████████████████████████▏                                | 286/485 [03:45<02:36,  1.27it/s]
 59%|███████████████████████████████████████████████▎                                | 287/485 [03:46<02:35,  1.27it/s]
 59%|███████████████████████████████████████████████▌                                | 288/485 [03:47<02:34,  1.28it/s]
 60%|███████████████████████████████████████████████▋                                | 289/485 [03:47<02:33,  1.27it/s]
 60%|███████████████████████████████████████████████▊                                | 290/485 [03:48<02:33,  1.27it/s]
 60%|████████████████████████████████████████████████                                | 291/485 [03:49<02:33,  1.26it/s]
 60%|████████████████████████████████████████████████▏                               | 292/485 [03:50<02:34,  1.25it/s]
 60%|████████████████████████████████████████████████▎                               | 293/485 [03:51<02:36,  1.22it/s]
 61%|████████████████████████████████████████████████▍                               | 294/485 [03:52<02:37,  1.21it/s]
 61%|████████████████████████████████████████████████▋                               | 295/485 [03:52<02:34,  1.23it/s]
 61%|████████████████████████████████████████████████▊                               | 296/485 [03:53<02:32,  1.24it/s]
 61%|████████████████████████████████████████████████▉                               | 297/485 [03:54<02:31,  1.24it/s]
 61%|█████████████████████████████████████████████████▏                              | 298/485 [03:55<02:30,  1.25it/s]
 62%|█████████████████████████████████████████████████▎                              | 299/485 [03:56<02:28,  1.25it/s]
 62%|█████████████████████████████████████████████████▍                              | 300/485 [03:56<02:27,  1.26it/s]
 62%|█████████████████████████████████████████████████▋                              | 301/485 [03:57<02:25,  1.26it/s]
 62%|█████████████████████████████████████████████████▊                              | 302/485 [03:58<02:25,  1.26it/s]
 62%|█████████████████████████████████████████████████▉                              | 303/485 [03:59<02:25,  1.25it/s]
 63%|██████████████████████████████████████████████████▏                             | 304/485 [04:00<02:25,  1.25it/s]
 63%|██████████████████████████████████████████████████▎                             | 305/485 [04:00<02:24,  1.25it/s]
 63%|██████████████████████████████████████████████████▍                             | 306/485 [04:01<02:23,  1.25it/s]
 63%|██████████████████████████████████████████████████▋                             | 307/485 [04:02<02:22,  1.25it/s]
 64%|██████████████████████████████████████████████████▊                             | 308/485 [04:03<02:21,  1.25it/s]
 64%|██████████████████████████████████████████████████▉                             | 309/485 [04:04<02:19,  1.26it/s]
 64%|███████████████████████████████████████████████████▏                            | 310/485 [04:04<02:18,  1.26it/s]
 64%|███████████████████████████████████████████████████▎                            | 311/485 [04:05<02:17,  1.26it/s]
 64%|███████████████████████████████████████████████████▍                            | 312/485 [04:06<02:17,  1.26it/s]
 65%|███████████████████████████████████████████████████▋                            | 313/485 [04:07<02:15,  1.27it/s]
 65%|███████████████████████████████████████████████████▊                            | 314/485 [04:07<02:14,  1.27it/s]
 65%|███████████████████████████████████████████████████▉                            | 315/485 [04:08<02:14,  1.27it/s]
 65%|████████████████████████████████████████████████████                            | 316/485 [04:09<02:13,  1.27it/s]
 65%|████████████████████████████████████████████████████▎                           | 317/485 [04:10<02:12,  1.27it/s]
 66%|████████████████████████████████████████████████████▍                           | 318/485 [04:11<02:14,  1.24it/s]
 66%|████████████████████████████████████████████████████▌                           | 319/485 [04:11<02:12,  1.25it/s]
 66%|████████████████████████████████████████████████████▊                           | 320/485 [04:12<02:11,  1.26it/s]
 66%|████████████████████████████████████████████████████▉                           | 321/485 [04:13<02:10,  1.26it/s]
 66%|█████████████████████████████████████████████████████                           | 322/485 [04:14<02:09,  1.26it/s]
 67%|█████████████████████████████████████████████████████▎                          | 323/485 [04:15<02:08,  1.26it/s]
 67%|█████████████████████████████████████████████████████▍                          | 324/485 [04:15<02:07,  1.27it/s]
 67%|█████████████████████████████████████████████████████▌                          | 325/485 [04:16<02:05,  1.27it/s]
 67%|█████████████████████████████████████████████████████▊                          | 326/485 [04:17<02:05,  1.26it/s]
 67%|█████████████████████████████████████████████████████▉                          | 327/485 [04:18<02:05,  1.26it/s]
 68%|██████████████████████████████████████████████████████                          | 328/485 [04:19<02:04,  1.26it/s]
 68%|██████████████████████████████████████████████████████▎                         | 329/485 [04:19<02:02,  1.27it/s]
 68%|██████████████████████████████████████████████████████▍                         | 330/485 [04:20<02:02,  1.27it/s]
 68%|██████████████████████████████████████████████████████▌                         | 331/485 [04:21<02:01,  1.27it/s]
 68%|██████████████████████████████████████████████████████▊                         | 332/485 [04:22<02:02,  1.25it/s]
 69%|██████████████████████████████████████████████████████▉                         | 333/485 [04:23<02:03,  1.23it/s]
 69%|███████████████████████████████████████████████████████                         | 334/485 [04:23<02:03,  1.22it/s]
 69%|███████████████████████████████████████████████████████▎                        | 335/485 [04:24<02:04,  1.21it/s]
 69%|███████████████████████████████████████████████████████▍                        | 336/485 [04:25<02:03,  1.21it/s]
 69%|███████████████████████████████████████████████████████▌                        | 337/485 [04:26<02:02,  1.21it/s]
 70%|███████████████████████████████████████████████████████▊                        | 338/485 [04:27<02:01,  1.21it/s]
 70%|███████████████████████████████████████████████████████▉                        | 339/485 [04:28<02:01,  1.20it/s]
 70%|████████████████████████████████████████████████████████                        | 340/485 [04:28<02:01,  1.19it/s]
 70%|████████████████████████████████████████████████████████▏                       | 341/485 [04:29<02:00,  1.19it/s]
 71%|████████████████████████████████████████████████████████▍                       | 342/485 [04:30<01:59,  1.19it/s]
 71%|████████████████████████████████████████████████████████▌                       | 343/485 [04:31<01:57,  1.21it/s]
 71%|████████████████████████████████████████████████████████▋                       | 344/485 [04:32<01:55,  1.22it/s]
 71%|████████████████████████████████████████████████████████▉                       | 345/485 [04:33<01:54,  1.23it/s]
 71%|█████████████████████████████████████████████████████████                       | 346/485 [04:33<01:53,  1.22it/s]
 72%|█████████████████████████████████████████████████████████▏                      | 347/485 [04:34<01:53,  1.22it/s]
 72%|█████████████████████████████████████████████████████████▍                      | 348/485 [04:35<01:52,  1.22it/s]
 72%|█████████████████████████████████████████████████████████▌                      | 349/485 [04:36<01:56,  1.16it/s]
 72%|█████████████████████████████████████████████████████████▋                      | 350/485 [04:37<01:59,  1.13it/s]
 72%|█████████████████████████████████████████████████████████▉                      | 351/485 [04:38<01:58,  1.14it/s]
 73%|██████████████████████████████████████████████████████████                      | 352/485 [04:39<01:55,  1.15it/s]
 73%|██████████████████████████████████████████████████████████▏                     | 353/485 [04:39<01:53,  1.17it/s]
 73%|██████████████████████████████████████████████████████████▍                     | 354/485 [04:40<01:51,  1.17it/s]
 73%|██████████████████████████████████████████████████████████▌                     | 355/485 [04:41<01:49,  1.19it/s]
 73%|██████████████████████████████████████████████████████████▋                     | 356/485 [04:42<01:47,  1.20it/s]
 74%|██████████████████████████████████████████████████████████▉                     | 357/485 [04:43<01:47,  1.19it/s]
 74%|███████████████████████████████████████████████████████████                     | 358/485 [04:44<01:47,  1.18it/s]
 74%|███████████████████████████████████████████████████████████▏                    | 359/485 [04:44<01:45,  1.20it/s]
 74%|███████████████████████████████████████████████████████████▍                    | 360/485 [04:45<01:43,  1.21it/s]
 74%|███████████████████████████████████████████████████████████▌                    | 361/485 [04:46<01:42,  1.21it/s]
 75%|███████████████████████████████████████████████████████████▋                    | 362/485 [04:47<01:40,  1.22it/s]
 75%|███████████████████████████████████████████████████████████▉                    | 363/485 [04:48<01:39,  1.22it/s]
 75%|████████████████████████████████████████████████████████████                    | 364/485 [04:49<01:46,  1.14it/s]
 75%|████████████████████████████████████████████████████████████▏                   | 365/485 [04:50<01:44,  1.14it/s]
 75%|████████████████████████████████████████████████████████████▎                   | 366/485 [04:50<01:44,  1.14it/s]
 76%|████████████████████████████████████████████████████████████▌                   | 367/485 [04:51<01:42,  1.16it/s]
 76%|████████████████████████████████████████████████████████████▋                   | 368/485 [04:52<01:40,  1.17it/s]
 76%|████████████████████████████████████████████████████████████▊                   | 369/485 [04:53<01:37,  1.19it/s]
 76%|█████████████████████████████████████████████████████████████                   | 370/485 [04:54<01:39,  1.16it/s]
 76%|█████████████████████████████████████████████████████████████▏                  | 371/485 [04:55<01:37,  1.17it/s]
 77%|█████████████████████████████████████████████████████████████▎                  | 372/485 [04:56<01:35,  1.18it/s]
 77%|█████████████████████████████████████████████████████████████▌                  | 373/485 [04:56<01:33,  1.20it/s]
 77%|█████████████████████████████████████████████████████████████▋                  | 374/485 [04:57<01:30,  1.22it/s]
 77%|█████████████████████████████████████████████████████████████▊                  | 375/485 [04:58<01:28,  1.24it/s]
 78%|██████████████████████████████████████████████████████████████                  | 376/485 [04:59<01:27,  1.24it/s]
 78%|██████████████████████████████████████████████████████████████▏                 | 377/485 [04:59<01:26,  1.25it/s]
 78%|██████████████████████████████████████████████████████████████▎                 | 378/485 [05:00<01:25,  1.25it/s]
 78%|██████████████████████████████████████████████████████████████▌                 | 379/485 [05:01<01:24,  1.26it/s]
 78%|██████████████████████████████████████████████████████████████▋                 | 380/485 [05:02<01:23,  1.26it/s]
 79%|██████████████████████████████████████████████████████████████▊                 | 381/485 [05:03<01:22,  1.26it/s]
 79%|███████████████████████████████████████████████████████████████                 | 382/485 [05:03<01:21,  1.26it/s]
 79%|███████████████████████████████████████████████████████████████▏                | 383/485 [05:04<01:21,  1.26it/s]
 79%|███████████████████████████████████████████████████████████████▎                | 384/485 [05:05<01:21,  1.24it/s]
 79%|███████████████████████████████████████████████████████████████▌                | 385/485 [05:06<01:21,  1.22it/s]
 80%|███████████████████████████████████████████████████████████████▋                | 386/485 [05:07<01:21,  1.21it/s]
 80%|███████████████████████████████████████████████████████████████▊                | 387/485 [05:08<01:20,  1.21it/s]
 80%|████████████████████████████████████████████████████████████████                | 388/485 [05:08<01:20,  1.21it/s]
 80%|████████████████████████████████████████████████████████████████▏               | 389/485 [05:09<01:20,  1.19it/s]
 80%|████████████████████████████████████████████████████████████████▎               | 390/485 [05:10<01:20,  1.18it/s]
 81%|████████████████████████████████████████████████████████████████▍               | 391/485 [05:11<01:20,  1.17it/s]
 81%|████████████████████████████████████████████████████████████████▋               | 392/485 [05:12<01:18,  1.18it/s]
 81%|████████████████████████████████████████████████████████████████▊               | 393/485 [05:13<01:18,  1.16it/s]
 81%|████████████████████████████████████████████████████████████████▉               | 394/485 [05:14<01:18,  1.16it/s]
 81%|█████████████████████████████████████████████████████████████████▏              | 395/485 [05:14<01:17,  1.17it/s]
 82%|█████████████████████████████████████████████████████████████████▎              | 396/485 [05:15<01:20,  1.11it/s]
 82%|█████████████████████████████████████████████████████████████████▍              | 397/485 [05:16<01:16,  1.15it/s]
 82%|█████████████████████████████████████████████████████████████████▋              | 398/485 [05:17<01:14,  1.16it/s]
 82%|█████████████████████████████████████████████████████████████████▊              | 399/485 [05:18<01:13,  1.17it/s]
 82%|█████████████████████████████████████████████████████████████████▉              | 400/485 [05:19<01:11,  1.19it/s]
 83%|██████████████████████████████████████████████████████████████████▏             | 401/485 [05:20<01:10,  1.20it/s]
 83%|██████████████████████████████████████████████████████████████████▎             | 402/485 [05:20<01:08,  1.21it/s]
 83%|██████████████████████████████████████████████████████████████████▍             | 403/485 [05:21<01:07,  1.22it/s]
 83%|██████████████████████████████████████████████████████████████████▋             | 404/485 [05:22<01:05,  1.23it/s]
 84%|██████████████████████████████████████████████████████████████████▊             | 405/485 [05:23<01:04,  1.24it/s]
 84%|██████████████████████████████████████████████████████████████████▉             | 406/485 [05:24<01:03,  1.25it/s]
 84%|███████████████████████████████████████████████████████████████████▏            | 407/485 [05:24<01:02,  1.25it/s]
 84%|███████████████████████████████████████████████████████████████████▎            | 408/485 [05:25<01:01,  1.26it/s]
 84%|███████████████████████████████████████████████████████████████████▍            | 409/485 [05:26<01:00,  1.26it/s]
 85%|███████████████████████████████████████████████████████████████████▋            | 410/485 [05:27<00:58,  1.27it/s]
 85%|███████████████████████████████████████████████████████████████████▊            | 411/485 [05:27<00:57,  1.28it/s]
 85%|███████████████████████████████████████████████████████████████████▉            | 412/485 [05:28<00:57,  1.27it/s]
 85%|████████████████████████████████████████████████████████████████████            | 413/485 [05:29<00:56,  1.27it/s]
 85%|████████████████████████████████████████████████████████████████████▎           | 414/485 [05:30<00:55,  1.27it/s]
 86%|████████████████████████████████████████████████████████████████████▍           | 415/485 [05:31<00:55,  1.27it/s]
 86%|████████████████████████████████████████████████████████████████████▌           | 416/485 [05:31<00:54,  1.27it/s]
 86%|████████████████████████████████████████████████████████████████████▊           | 417/485 [05:32<00:53,  1.27it/s]
 86%|████████████████████████████████████████████████████████████████████▉           | 418/485 [05:33<00:52,  1.28it/s]
 86%|█████████████████████████████████████████████████████████████████████           | 419/485 [05:34<00:51,  1.28it/s]
 87%|█████████████████████████████████████████████████████████████████████▎          | 420/485 [05:35<00:51,  1.27it/s]
 87%|█████████████████████████████████████████████████████████████████████▍          | 421/485 [05:35<00:50,  1.27it/s]
 87%|█████████████████████████████████████████████████████████████████████▌          | 422/485 [05:36<00:49,  1.28it/s]
 87%|█████████████████████████████████████████████████████████████████████▊          | 423/485 [05:37<00:48,  1.27it/s]
 87%|█████████████████████████████████████████████████████████████████████▉          | 424/485 [05:38<00:47,  1.27it/s]
 88%|██████████████████████████████████████████████████████████████████████          | 425/485 [05:38<00:46,  1.28it/s]
 88%|██████████████████████████████████████████████████████████████████████▎         | 426/485 [05:39<00:46,  1.27it/s]
 88%|██████████████████████████████████████████████████████████████████████▍         | 427/485 [05:40<00:45,  1.28it/s]
 88%|██████████████████████████████████████████████████████████████████████▌         | 428/485 [05:41<00:44,  1.28it/s]
 88%|██████████████████████████████████████████████████████████████████████▊         | 429/485 [05:42<00:43,  1.28it/s]
 89%|██████████████████████████████████████████████████████████████████████▉         | 430/485 [05:42<00:43,  1.27it/s]
 89%|███████████████████████████████████████████████████████████████████████         | 431/485 [05:43<00:42,  1.27it/s]
 89%|███████████████████████████████████████████████████████████████████████▎        | 432/485 [05:44<00:41,  1.27it/s]
 89%|███████████████████████████████████████████████████████████████████████▍        | 433/485 [05:45<00:40,  1.27it/s]
 89%|███████████████████████████████████████████████████████████████████████▌        | 434/485 [05:46<00:39,  1.28it/s]
 90%|███████████████████████████████████████████████████████████████████████▊        | 435/485 [05:46<00:39,  1.27it/s]
 90%|███████████████████████████████████████████████████████████████████████▉        | 436/485 [05:47<00:38,  1.28it/s]
 90%|████████████████████████████████████████████████████████████████████████        | 437/485 [05:48<00:37,  1.28it/s]
 90%|████████████████████████████████████████████████████████████████████████▏       | 438/485 [05:49<00:36,  1.28it/s]
 91%|████████████████████████████████████████████████████████████████████████▍       | 439/485 [05:49<00:36,  1.27it/s]
 91%|████████████████████████████████████████████████████████████████████████▌       | 440/485 [05:50<00:35,  1.25it/s]
 91%|████████████████████████████████████████████████████████████████████████▋       | 441/485 [05:51<00:35,  1.22it/s]
 91%|████████████████████████████████████████████████████████████████████████▉       | 442/485 [05:52<00:34,  1.23it/s]
 91%|█████████████████████████████████████████████████████████████████████████       | 443/485 [05:53<00:33,  1.24it/s]
 92%|█████████████████████████████████████████████████████████████████████████▏      | 444/485 [05:54<00:33,  1.24it/s]
 92%|█████████████████████████████████████████████████████████████████████████▍      | 445/485 [05:54<00:31,  1.26it/s]
 92%|█████████████████████████████████████████████████████████████████████████▌      | 446/485 [05:55<00:30,  1.26it/s]
 92%|█████████████████████████████████████████████████████████████████████████▋      | 447/485 [05:56<00:30,  1.27it/s]
 92%|█████████████████████████████████████████████████████████████████████████▉      | 448/485 [05:57<00:29,  1.26it/s]
 93%|██████████████████████████████████████████████████████████████████████████      | 449/485 [05:57<00:28,  1.26it/s]
 93%|██████████████████████████████████████████████████████████████████████████▏     | 450/485 [05:58<00:27,  1.26it/s]
 93%|██████████████████████████████████████████████████████████████████████████▍     | 451/485 [05:59<00:26,  1.26it/s]
 93%|██████████████████████████████████████████████████████████████████████████▌     | 452/485 [06:00<00:25,  1.27it/s]
 93%|██████████████████████████████████████████████████████████████████████████▋     | 453/485 [06:01<00:25,  1.27it/s]
 94%|██████████████████████████████████████████████████████████████████████████▉     | 454/485 [06:01<00:24,  1.27it/s]
 94%|███████████████████████████████████████████████████████████████████████████     | 455/485 [06:02<00:23,  1.27it/s]
 94%|███████████████████████████████████████████████████████████████████████████▏    | 456/485 [06:03<00:22,  1.27it/s]
 94%|███████████████████████████████████████████████████████████████████████████▍    | 457/485 [06:04<00:22,  1.27it/s]
 94%|███████████████████████████████████████████████████████████████████████████▌    | 458/485 [06:05<00:21,  1.27it/s]
 95%|███████████████████████████████████████████████████████████████████████████▋    | 459/485 [06:05<00:20,  1.27it/s]
 95%|███████████████████████████████████████████████████████████████████████████▉    | 460/485 [06:06<00:19,  1.27it/s]
 95%|████████████████████████████████████████████████████████████████████████████    | 461/485 [06:07<00:18,  1.27it/s]
 95%|████████████████████████████████████████████████████████████████████████████▏   | 462/485 [06:08<00:18,  1.26it/s]
 95%|████████████████████████████████████████████████████████████████████████████▎   | 463/485 [06:09<00:17,  1.24it/s]
 96%|████████████████████████████████████████████████████████████████████████████▌   | 464/485 [06:09<00:17,  1.23it/s]
 96%|████████████████████████████████████████████████████████████████████████████▋   | 465/485 [06:10<00:16,  1.23it/s]
 96%|████████████████████████████████████████████████████████████████████████████▊   | 466/485 [06:11<00:15,  1.23it/s]
 96%|█████████████████████████████████████████████████████████████████████████████   | 467/485 [06:12<00:14,  1.24it/s]
 96%|█████████████████████████████████████████████████████████████████████████████▏  | 468/485 [06:13<00:13,  1.24it/s]
 97%|█████████████████████████████████████████████████████████████████████████████▎  | 469/485 [06:13<00:12,  1.24it/s]
 97%|█████████████████████████████████████████████████████████████████████████████▌  | 470/485 [06:14<00:12,  1.25it/s]
 97%|█████████████████████████████████████████████████████████████████████████████▋  | 471/485 [06:15<00:11,  1.26it/s]
 97%|█████████████████████████████████████████████████████████████████████████████▊  | 472/485 [06:16<00:10,  1.26it/s]
 98%|██████████████████████████████████████████████████████████████████████████████  | 473/485 [06:17<00:09,  1.26it/s]
 98%|██████████████████████████████████████████████████████████████████████████████▏ | 474/485 [06:17<00:08,  1.26it/s]
 98%|██████████████████████████████████████████████████████████████████████████████▎ | 475/485 [06:18<00:07,  1.26it/s]
 98%|██████████████████████████████████████████████████████████████████████████████▌ | 476/485 [06:19<00:07,  1.27it/s]
 98%|██████████████████████████████████████████████████████████████████████████████▋ | 477/485 [06:20<00:06,  1.25it/s]
 99%|██████████████████████████████████████████████████████████████████████████████▊ | 478/485 [06:21<00:05,  1.24it/s]
 99%|███████████████████████████████████████████████████████████████████████████████ | 479/485 [06:21<00:04,  1.24it/s]
 99%|███████████████████████████████████████████████████████████████████████████████▏| 480/485 [06:22<00:04,  1.24it/s]
 99%|███████████████████████████████████████████████████████████████████████████████▎| 481/485 [06:23<00:03,  1.24it/s]
 99%|███████████████████████████████████████████████████████████████████████████████▌| 482/485 [06:24<00:02,  1.24it/s]
100%|███████████████████████████████████████████████████████████████████████████████▋| 483/485 [06:25<00:01,  1.25it/s]
100%|███████████████████████████████████████████████████████████████████████████████▊| 484/485 [06:25<00:00,  1.25it/s]
100%|████████████████████████████████████████████████████████████████████████████████| 485/485 [06:26<00:00,  1.26it/s]
[MoviePy] Done.
[MoviePy] >>>> Video ready: challenge_video_output.mp4 

Wall time: 6min 27s
In [ ]:
cap = cv2.VideoCapture("project_video.mp4")
total_frames = cap.get(7)
print(total_frames)
success, img = cap.read()
count = 0
success = True
while success:
    success,img = cap.read()
    if (count > 612) & (count < 616):
        cv2.imwrite("./frame/frame%d.jpg" % count, img)     # save frame as JPEG file
    count += 1